FFT in Matlab

Gast #1284121
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.
Gast #1284140
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.
Gast #1284837
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.