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
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
>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 :)
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.
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.
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.
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ö. ;)
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?
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.
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.
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.
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.
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.
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.
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...
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 ?