mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP FFT in Matlab


Autor: Hilarious (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fabio S. (codehamster)
Datum:

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

Autor: Dingens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Lenz (hochbett)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.