Wenn Sie einen FFT-Plot eines einfachen Signals erstellen, wie zum Beispiel:
t = 0:0.01:1 ;
N = max(size(t));
x = 1 + sin( 2*pi*t ) ;
y = abs( fft( x ) ) ;
stem( N*t, y )
1Hz Sinus + DC
FFT von oben
Ich verstehe, dass die Zahl in der ersten Bin "wie viel DC" im Signal ist.
y(1) %DC
> 101.0000
Die Zahl in der zweiten Bin sollte "wie viel 1 Zyklus über das gesamte Signal" sein:
y(2) %1 cycle in the N samples
> 50.6665
Aber es ist nicht 101! Es ist ungefähr 50,5.
Es gibt einen weiteren Eintrag am Ende des fft-Signals, der gleich groß ist:
y(101)
> 50.2971
Also nochmal 50,5.
Meine Frage ist, warum ist die FFT so gespiegelt? Warum ist es nicht nur ein 101- y(2)
Zoll-Signal (was natürlich bedeuten würde, dass in allen 101-Bins Ihres Signals eine 1-Hz-Sinuskurve enthalten ist?)
Wäre es richtig zu tun:
mid = round( N/2 ) ;
% Prepend y(1), then add y(2:middle) with the mirror FLIPPED vector
% from y(middle+1:end)
z = [ y(1), y( 2:mid ) + fliplr( y(mid+1:end) ) ];
stem( z )
Flip und Add-In der zweiten Hälfte des FFT-Vektors
Ich dachte jetzt, der gespiegelte Teil auf der rechten Seite wird korrekt hinzugefügt, was mir die gewünschte "Alle 101 Bins der FFT enthalten eine 1 Hz Sinuskurve" gibt.
>> z(2)
ans =
100.5943
Antworten:
Reale Signale werden aufgrund der Natur der Fouriertransformation in der realen und der negativen Hälfte der Fouriertransformation "gespiegelt". Die Fourier-Transformation ist wie folgt definiert:
Grundsätzlich korreliert es das Signal mit einer Reihe von komplexen Sinuskurven, jede mit ihrer eigenen Frequenz. Wie sehen diese komplexen Sinuskurven aus? Das Bild unten zeigt eine komplexe Sinuskurve.
Der "Korkenzieher" ist die rotierende komplexe Sinuskurve, während die beiden folgenden Sinuskurven die extrahierten realen und imaginären Komponenten der komplexen Sinuskurve sind. Der kluge Leser wird feststellen, dass die realen und imaginären Komponenten exakt gleich sind, nur dass sie um 90 Grad zueinander phasenverschoben sind ( ). Da sie um 90 Grad phasenverschoben sind, sind sie orthogonal und können jede Komponente des Signals bei dieser Frequenz "fangen".π2
Die Beziehung zwischen Exponential und Cosinus / Sinus ergibt sich aus der Euler-Formel
Dies ermöglicht es uns, die Fourier-Transformation wie folgt zu modifizieren:
Bei den negativen Frequenzen wird die Fouriertransformation wie folgt: -
Der Vergleich der Version mit negativer Frequenz mit der Version mit positiver Frequenz zeigt, dass der Cosinus der gleiche ist, während der Sinus invertiert ist. Sie sind jedoch immer noch um 90 Grad phasenverschoben, sodass sie jede Signalkomponente bei dieser (negativen) Frequenz erfassen können.
Da sowohl die Sinuskurven der positiven als auch der negativen Frequenz um 90 Grad phasenverschoben sind und dieselbe Größe haben, reagieren beide auf gleiche Weise auf reale Signale. Oder besser gesagt, die Größe ihrer Reaktion ist gleich, aber die Korrelationsphase ist unterschiedlich.
EDIT: Insbesondere ist die negative Frequenzkorrelation das Konjugat der positiven Frequenzkorrelation (aufgrund der invertierten imaginären Sinuskomponente) für reale Signale. In mathematischer Hinsicht ist dies, wie Dilip ausführte,
Eine andere Art, darüber nachzudenken:
Imaginäre Komponenten sind genau das. Imaginär! Sie sind ein Werkzeug, mit dem eine zusätzliche Ebene zum Anzeigen von Objekten verwendet werden kann. Sie ermöglichen die digitale (und analoge) Signalverarbeitung, wenn auch nicht viel einfacher als die Verwendung von Differentialgleichungen!
Aber wir können nicht die logischen Gesetze der Natur brechen, können wir nichts tun ‚echte‘ mit dem imaginären Inhalt und so muss sie effektiv selbst aufheben , bevor in der Realität zurück. Wie sieht dies bei der Fourier-Transformation eines zeitbasierten Signals (komplexer Frequenzbereich) aus? Wenn wir die positiven und negativen Frequenzkomponenten des Signals addieren / summieren, das die Imaginärteile aufheben, ist dies das, was wir damit meinen, dass die positiven und negativen Elemente miteinander konjugiert sind. Beachten Sie, dass, wenn eine FT von einem Zeitsignal genommen wird, diese konjugierten Signale existieren, wobei der "reale" Teil von jedem die Größe teilt, die Hälfte im positiven Bereich, die Hälfte im negativen Bereich, so dass das Addieren der Konjugate zusammen die entfernt imaginärer Inhalt und liefert nur den realen Inhalt.†
quelle
Die FFT (oder Fast Fourier Transform) ist eigentlich ein Algorithmus zur Berechnung der Diskreten Fourier Transformation oder DFT. Die typische Implementierung erzielt eine Beschleunigung gegenüber der herkömmlichen Berechnung der DFT, indem die Tatsache ausgenutzt wird, dass , die Anzahl der Datenpunkte, eine zusammengesetzte ganze Zahl ist, was hier nicht der Fall ist, da eine Primzahl ist. (Während FFTs für den Fall existieren, dass eine Primzahl ist, verwenden sie eine andere Formulierung, die möglicherweise in MATLAB implementiert ist oder nicht). Tatsächlich wählen viele Leute absichtlich in der Form oder , um die DFT-Berechnung über die FFT zu beschleunigen.N 101 N N 2k 4k
Bei der Frage, warum die Spiegelung stattfindet, hat hotpaw2 im Wesentlichen den Grund angegeben, und daher ist das Folgende nur ein Ausfüllen der Details. Die DFT von einer Sequenz von Datenpunkten definiert eine Sequenz sein wobei wobei . Es ist offensichtlich, dass im Allgemeinen eine Folge mit komplexen Werten ist, auch wenn eine Folge mit reellen Werten ist. Aber beachte, wannx=(x[0],x[1],x[2],…,x[N−1]) N X=(X[0],X[1],X[2],…,X[N−1])
MATLABi-Benutzer müssen dies übersetzen, um die Tatsache zu berücksichtigen, dass MATLAB-Arrays von aufwärts nummeriert sind .1
In Bezug auf Ihre tatsächlichen Daten ist Ihr ein Gleichstromwert von plus etwas mehr als eine Periode einer Sinuskurve mit einer Frequenz von Hz. In der Tat erhalten Sie wobei . Somit haben das erste und das letzte von Abtastwerten den gleichen Wert. Die DFT, die Sie berechnen, ist also gegeben durch Die Nichtübereinstimmung zwischen und verursacht Unordnung in der DFT: the Werte vonx 1 1
t
quelle
Beachten Sie, dass ein FFT-Ergebnis (wie bei konjugierter Symmetrie) nur dann gespiegelt wird, wenn die Eingabedaten real sind.
Für rein reale Eingabedaten heben die beiden konjugierten Spiegelbilder in der FFT die Imaginärteile aller komplexen Sinuskurven auf und summieren sich so zu einer rein realen Sinuskurve (mit Ausnahme des kleinen numerischen Rundungsrauschens), sodass Sie eine Darstellung von rein erhalten echte Sinuswellen.
Wenn das FFT-Ergebnis nicht konjugiert gespiegelt wäre, würde es eine Wellenform darstellen, die komplexe Werte (imaginäre Komponenten ungleich Null) und keine reellen Werte aufweist.
quelle