mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Rekonstruktion eines Messignals


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von AD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Guten Abend zusammen, ich habe folgende "Problemstellung"

- Mein AD Wandler Sampelt mit 200 kSps
- Mein Signal ist ein Sinus mit 1 V 180 kHz, Nyquist-Shannon ist also 
eingehalten.

Wenn ich jetzt Sample, und das ganze visualisiere, dann habe ich 
standardmäßig eine Lineare Interpolation (bei Excel) der Messwerte. Wie 
aber kann aber das Signal möglichst detailgetreu rekonsturieren, sodass 
es eben wie ein richtiger Sinus aussieht? Wie macht man so etwas in der 
Praxis?

VG Bernd

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
AD schrieb:
> - Mein AD Wandler Sampelt mit 200 kSps
> - Mein Signal ist ein Sinus mit 1 V 180 kHz, Nyquist-Shannon ist also
> eingehalten.
Nein, du hast die "2" übersehen

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Nein, du hast die "2" übersehen

war das nicht >2?
https://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem

von AD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ach entschuldigt, das war ein Tippfehler. Das Signal liegt bei 80 kHz.

von Meseeks (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Wie aber kann aber das Signal möglichst detailgetreu rekonsturieren, sodass
>es eben wie ein richtiger Sinus aussieht?

Ich glaube - GLAUBE - das geht gar nicht, ohne zu wissen, welcher Art 
das Ausgangssignal war denn

1.) könnte es ja auch ein periodisches Signal gewesen sein, dass zu den 
gesampelten Momenten zufällig die selben Werte hat, wie ein Sinus

2.) ich denke, das Shanon-Theorem bewart einen nur davor, dass man 
Urpsungssignale mit ganzen Vielfachen der Ursprungsfrequenz annehmen 
kann.
Ich meine - MEINE ;> - das wenn man z.B. einen Sinus genau mit der 
doppelten Samplingrate seiner Frequenz aufnimmt, man nicht weiß, ob der 
Sinus den man in die Messwerte hineininterpretiert "eben diese Frequenz" 
oder "eben diese Frequenz * 2" hatte


Gefährliches Halbwissen - bin sehr gespannt auf weitere Antworten :)

von AD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also entsprechend des Theorems hätte ich gesagt, dass Sinussignale immer 
rekonstruierbar sind, wenn ich mehr als 2 Messwerte pro Periode habe 
(Nyquist) und die Amplitude des Signals kenne. Letztendlich erkenne ich 
anhand der Messwerte welche Frequenz das Signal hat und kann darüber 
doch die Sinusfunktion als Stützfunktion legen.

von Sven B. (scummos)


Bewertung
0 lesenswert
nicht lesenswert
Entweder du addierst diese sinc-Reihe, oder (ich glaube das ist 
einfacher) du upsampelst es mit FFT. Also RFFT berechnen, soviele Nullen 
anhängen wie du möchtest (um so viel wird das Ergebnis dann 
"verfeinert"), rücktransformieren, fertig.

von Sven B. (scummos)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein Beispiel für das FFT-Upsampling durch Zero-Padding, die 
Normierung stimmt nicht ganz. Ist eigentlich ein Sinus -- der Fehler 
entsteht durch die Randbedingungen.

Wenn du weißt, dass es ein Sinus ist, bekommst du mit dem Fit eines 
einzelnen Sinus genauere Ergebnisse.

: Bearbeitet durch User
von Sven B. (scummos)


Bewertung
0 lesenswert
nicht lesenswert
Meseeks schrieb:
>>Wie aber kann aber das Signal möglichst detailgetreu rekonsturieren, sodass
>>es eben wie ein richtiger Sinus aussieht?
>
> Ich glaube - GLAUBE - das geht gar nicht, ohne zu wissen, welcher Art
> das Ausgangssignal war denn
>
> 1.) könnte es ja auch ein periodisches Signal gewesen sein, dass zu den
> gesampelten Momenten zufällig die selben Werte hat, wie ein Sinus

Dann hast du aber das Shannon-Theorem verletzt.

> 2.) ich denke, das Shanon-Theorem bewart einen nur davor, dass man
> Urpsungssignale mit ganzen Vielfachen der Ursprungsfrequenz annehmen
> kann.

Nö. ;)

von AD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wie sieht das denn aus, wenn ich mehrere Frequenzanteile innerhalb eines 
Signals habe ? Klappt dann die FFT, Zeropadding , Fensterung und die 
Rückrechnung dann immer noch?

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Du kannst den sinus dann drüberlegen. Aber er ergibt sich nicht aus den 
Messwerten, sonder ist implizit bekannt. Wenn du kleiner als 2 bist, 
passen auch andere Frequenzen.

von Sven B. (scummos)


Bewertung
0 lesenswert
nicht lesenswert
AD schrieb:
> Wie sieht das denn aus, wenn ich mehrere Frequenzanteile innerhalb eines
> Signals habe ? Klappt dann die FFT, Zeropadding , Fensterung und die
> Rückrechnung dann immer noch?

Jo das klappt immer und ist immer die exakte Lösung.

von AD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Prima, danke dir !

von Hannes J. (pnuebergang)


Bewertung
0 lesenswert
nicht lesenswert
AD schrieb:
> Wenn ich jetzt Sample, und das ganze visualisiere, dann habe ich
> standardmäßig eine Lineare Interpolation (bei Excel) der Messwerte. Wie
> aber kann aber das Signal möglichst detailgetreu rekonsturieren, sodass
> es eben wie ein richtiger Sinus aussieht? Wie macht man so etwas in der
> Praxis?

Du hast das Rekonstruktionsfilter vergessen, ein Tiefpass. Idealerweise 
ein idealer Tiefpass. Den gibt es praktisch nicht, also ein "guter" 
Tiefpass der oberhalb der Abtastfrequenz abschneidet.

Zero-padding alleine reicht nicht, nicht bei Signalen mit beliebiger 
Form. Für korrektes Upsampling brauchst du schon einen Tiefpass.

Einfach einen Sinus mit bekannter Frequenz und Amplitude drüber legen 
weil man weiß das er es ist ist unsinnig. Wenn man weiß was es ist muss 
man nicht mehr messen.

von AD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich bins wieder, ich habe jetzt folgendes Messignal. Dieses würde ich 
nun gerne über die FFT, Fensterung, Zeropadding und wieder 
zurückrechnen.

Ich hattte mir überlegt es in Matlab zu realisieren, bin darin aber noch 
recht neu. Habt ihr Tipps dazu oder ggf. Vorlagen wie dies gemacht wird? 
Ich hatte bereits nach Lösungen im Netz gesucht, bisher waren die aber 
alle noch nicht zielführend.

von AD (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Auf der angefügten Abbildung ist das Signal als Graph und einmal als 
Rohdateoi hinterlegt. Die erste Spalte ist der Zeitstempel in Sekunden, 
die Spalte 2 und 3 sind die jeweiligen Messdaten. Allerdings ist 
zunächst die dritte Spalte zu vernachlässigen. Ich würde gern ersteinmal 
das Signal der zweiten Spalte bearbeiten.

von AD (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie habe ich wohl was beim hochladen des Graphen falsch gemacht, 
sollte jetzt klappen. Tut mir leid für die Doppelposts, kann diese 
allerdings leider nicht editieren, da ich wohl nicht registriert bin.

von Joe F. (easylife)


Bewertung
0 lesenswert
nicht lesenswert
Das sind aber auch keine 80 KHz, oder? Eher so um die 25 KHz...

von AD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ja genau, etwa 25 kHz

von Joe F. (easylife)


Bewertung
0 lesenswert
nicht lesenswert
Und reichen dir die 25 KHz jetzt, oder sollen auch 80 KHz rekonstruiert 
werden, so wie ursprünglich dargestellt?
Und die Samplerate scheint auch 433 KHz zu sein, und nicht 200 wie am 
Anfang...

: Bearbeitet durch User
von Joe F. (easylife)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
128-fach upgesampled, TP gefiltert, 16-fach downgesampled...
Beim Filter hab ich mir nicht viel Mühe gegeben, ist ein 1st-order IIR 
4x hintereinander.

: Bearbeitet durch User
von AD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Oh das schaut richtig gut aus. Ja ich weiß die Eigenschaften der Messung 
(Samplefrequenz etc.) weicht von den Angaben oben ab. Es handelt sich 
auch nur um eine Testmessung. Hast du die Ergebnisse über Matlab 
berechnet ?

von Joe F. (easylife)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
AD schrieb:
> Hast du die Ergebnisse über Matlab
> berechnet ?

Ne, Matlab habe ich nicht. Aber einen C Compiler ;-)

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.