Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT in Matlab


von Hilarious (Gast)


Lesenswert?

Hi,

ich muss mich zwecks einer Datenanalyse mit der FFT von Matlab 
auseinandersetzen und stoße auf ein paar Fragen bzgl der vom FFT 
gelieferten Ergebnisse.
Zunächst ist mir nicht ganz klar, warum man zur Berechnung der 
Amplituden das Ergebnis der FFT verdoppelt (Ausnahme a0)!?. F oberhalb 
von Fmax werden ausgeblendet.

Demnach wäre X:
X = fft(x)/N;
X= [X(1) 2*X(2:floor((N-1)/2)+1)];

Eigentlich eine sehr einfache Frage. Aber es ist leider Ewigkeiten her 
das ich mit damit auseinandersetzen musste.

Danke.

von Fabio S. (codehamster)


Lesenswert?

ich glaube die FFT in Matlab berechnet nur das einseitige Spektrum, 
desshalb die verdoppelung ausser a0 = DC

von Dingens (Gast)


Lesenswert?

Grund ist das Abtasttheorem, nachdem sich das Spektrum durch den 
Aliasing-Effekt an der halben Abtastfrequenz spiegeln muss. Da also 
beide Spiegelhälften identisch sein müssen ist es in der Berechnung 
performanter, eine Hälfte zu verdoppeln, als beide elementweise 
aufzusummieren.

von Michael L. (Gast)


Lesenswert?

Hallo,

> Zunächst ist mir nicht ganz klar, warum man zur Berechnung der
> Amplituden das Ergebnis der FFT verdoppelt (Ausnahme a0)!?. F oberhalb
> von Fmax werden ausgeblendet.
>
> Demnach wäre X:
> X = fft(x)/N;
> X= [X(1) 2*X(2:floor((N-1)/2)+1)];
bei der FFT sind die Aufbaufunktionen, mithilfe derer Du die 
reellwertigen Signalwerte rekonstruierst, komplexe e-Funktionen mit 
Real- und Imaginärteil.

Damit kannst Du nur dann rein reelle Signale aufbauen, wenn die 
Aufbaufunktionen als Paare aus zueinander konjugiert komplexen Signalen 
auftauchen:

x(t) =   A * exp(jwt)     +      conj(A) * exp(-jwt)

       positive Frequenz           negative Frequenz

       Zeiger dreht in             Zeiger dreht in
       positive Richtung           negative Richtung

       Addition eines zu           Addition eines zu A
       A gehörigen konst.          gehörigen konstanten Winkels.
       Winkels in                  in negative Richtung.
       in positive Richtung

Du erinnerst Dich: Die Summe aus Zahl und dem konjugierten der Zahl ist 
immer reellwertig!

      _
      /|\
  A  /   \ conj(A)
    /     \
   /      _\|

Summe ist reell.


Die Signalanteile treten im Spektrum also immer doppelt auf:
Einmal mit der komplexen Amplitude A (bei der positiven Frequenz) und 
einmal bei mit der komplexen Amplitude conj(A) (bei den negativen 
Frequenzen).

Wenn Du die Hälfte der FFT-Werte nicht beachtest, so ist klar, daß etwas 
fehlt.

Daß ein Faktor 2 verlorengeht, hängt direkt damit zusammen, daß die 
Paare der Aufbaufunktionen jeweils konjugiert komplex zueinander sind. 
Den Faktor 2 kannst Du durch scharfes Hinsehen fast schon aus der 
Zeichnung ablesen.

Rechnerisch ergibt er sich folgendermaßen:

Sei A = |A|*exp(j phi)

Dann gilt:
A*exp(jwt) + conj(A)*exp(-jwt) = 2 |A| * exp(j phi) * cos(wt)

Die Amplitude der Summe ist also tatsächlich doppelt so groß wie A und 
rein reellwertig.


Gruß,
  Michael



PS:
Wenn Du die FFT von einem Signal mit N Werten machst, erhältst Du N 
Werte zurück.

Sie gehören zu den Frequenzen:
0:fs/N:(N-1)/N*fs         mit fs: Abtastfrequenz

Die zweite Hälfte der Frequenzen sind aufgrund der Periodizität des 
Spektrums genau die negativen Frequenzen.

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
Noch kein Account? Hier anmelden.