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
Wolfgang schrieb: > Nein, du hast die "2" übersehen war das nicht >2? https://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem
Ach entschuldigt, das war ein Tippfehler. Das Signal liegt bei 80 kHz.
>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.
:
Bearbeitet durch User
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...
:
Bearbeitet durch User
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
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 ?
AD schrieb: > Hast du die Ergebnisse über Matlab > berechnet ? Ne, Matlab habe ich nicht. Aber einen C Compiler ;-)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.