Die Cyan-Kurve ist ein Spektrum von 50 Hz und die Magenta-Kurve ist eine 50,1-Hz-Sinuswelle (mit einer Amplitude von 0,7). Beide werden mit 1024 Proben / s abgetastet. Ich habe eine 1024-Punkte-FFT durchgeführt, um dieses Spektrum zu erhalten.
Warum ist nur das 50-Hz-Spektrum ein Einzelwert? Warum besteht der 50,1-Hz-Sinus aus anderen Frequenzen als 50,1 Hz? Woher kommen diese neuen Frequenzen?
Ich habe das 50,1-Hz-Signal nicht linear verarbeitet! Auch die 50,1 Hz scheinen eine kleinere maximale Amplitude zu haben, dh sie ist nicht 0,7, obwohl die von mir erzeugte Sinuswelle tatsächlich eine Amplitude von 0,7 hat.
Warum ist das?
Erhältlich mit dem MATALB-Befehl fft ();
Antworten:
Tatsächlich gibt Matts Antwort hier bereits einen Überblick über das Problem: Die DFT ist sowohl im Zeit- als auch im Frequenzbereich implizit periodisch (siehe diese Frage ). Aus Ihren Parametern können wir berechnen, dass Ihr Beobachtungszeitraum 1 s beträgt. Das heißt, Sie beobachten 50 Perioden eines 50-Hz-Tons. Eine periodische Verlängerung dieses Beobachtungsintervalls führt immer zu einer scheinbaren Sinuswelle. Wenn Sie den 50,1-Hz-Ton nehmen, transformieren Sie 50,1-Perioden einer Schwingung. Eine periodische Verlängerung dieses Signals führt zu Phasensprüngen, die zusätzliche spektrale Nebenflüsse verursachen.
Beide oben beschriebenen Effekte tragen zum beobachteten Spektrum bei.
quelle
Dies ist der Effekt des Abschneidens oder Fensters des Sinussignals. Sie müssen das Signal so abschneiden, dass es immer noch die ursprüngliche Sinuswelle ist, wenn Sie das verschobene Signal zu dem abgeschnittenen Signal hinzufügen.
quelle
Sie erhalten nur einen FFT-Punkt mit einem einzigen Ergebnis für eine Frequenz von reinem unmoduliertem Sinus, die in der FFT-Apertur oder -Breite genau ganzzahlig periodisch ist. Jede andere Frequenz der Sinuskurve wird mit der Transformation (einem periodischen Sinc) des Standardfensters (einem Rechteck) als gefaltet angezeigt.
50,1 Hz sind im 1-Sekunden-Fenster Ihrer FFT nicht genau periodisch.
Diese anderen "Leck" -FFT-Ergebnisbereiche oder -Frequenzen werden benötigt, um die Diskontinuität darzustellen, die zwischen den Fenstergrenzen durch jedes Signal erzeugt wird, das in der FFT-Breite nicht genau ganzzahlig periodisch ist. Dies liegt daran, dass alle Basisvektoren einer DFT innerhalb der Breite der DFT genau ganzzahlig sind und somit keine scharfe Diskontinuität zwischen dem Ende und dem Anfang des Basisvektors aufweisen. Daher kann jedes Signal, das diese Eigenschaften nicht aufweist, nicht durch nur einen DFT-Basisvektor (und sein komplexes Konjugat) dargestellt werden, sodass die Informationen über den Rest des Signals irgendwo abgelegt werden müssen.
Da die Gesamtenergie durch die FFT-Transformation (Parseval'a-Theorem) erhalten bleibt, nimmt die Energie in den "Leck" -Behältern dem Peak-Bin ab. Daher muss die Größe des Peak-Bins niedriger sein.
quelle
Ich wette, Ihre Sinuswelle ist beim ersten und letzten Sample Null? Das sollte nicht sein. Es sollte so ausgerichtet sein, dass das nächste Sample nach dem letzten Sample Null ist, so dass Sie Kopien des Signals nacheinander kopieren und einfügen können und sie fortlaufend aussehen, ohne doppelte Samples. Stellen Sie es sich vielleicht wie ein gekacheltes Desktop-Hintergrundbild vor, bei dem eine Kante beim Kacheln nahtlos mit der gegenüberliegenden Kante zusammentreffen muss. :)
Ein Python-Beispiel finden Sie unter https://gist.github.com/endolith/236567 :
Sehen Sie, wie zwei Kopien des Signals zu einer kontinuierlichen Welle zusammenpassen:
In diesem Fall ist die FFT-Energie vollständig in einem einzelnen Behälter enthalten:
quelle
Dies tritt aufgrund von spektralen Leckagen und Fenstern auf. Die ideale Antwort, dh die Impulsfunktion, ist für eine kontinuierliche Zeitsinuswelle. Wenn Sie die DFT einer diskreten Sinuswelle in einem Digitalcomputer aufnehmen, nehmen Sie im Grunde eine Fourier-Transformation von Sinus mit Fenster und Abtastung und tasten sie dann im Frequenzbereich ab. Dies verursacht die spektrale Leckage. Siehe: http://w.astro.berkeley.edu/~jrg/ngst/fft/leakage.html
quelle