Fast Fourier Transform (FFT)



  • Hallo,

    ich habe ein Problem mit der 1-Dimensionalen FFT-Implementation auf dieser Seite: http://local.wasp.uwa.edu.au/~pbourke/other/dft/

    Ich hab mir mal spaßeshalber eine Wave-Datei gebastelt, in der nur eine Frequenz steckt, die transformiert und dann mit dem Ergebnis die inverse Transformation durchgeführt - herauskommen sollte also eigentlich das ursprüngliche Signal. Mein Ergebnis sieht aber anders aus: Ca. die Hälfte der Amplituden-Werte liegt fast bei Null, die restlichen ergeben die gewünschte Sinus-Kurve. Die Abfolge von "richtig" und "falsch" wirkenden Amplituden-Werten wirkt zufällig: Manchmal hat man fünf vernünftige Werte und dann wieder einen Auschlag nach Null, manchmal hat man mehrere Werte hintereinander, die in der Nähe von Null liegen und nur einzelne richtige, etc.

    Ich kann mir dieses Phänomen absolut nicht erklären. Kann mir irgendwer weiterhelfen?

    Gruß,
    SuperGreenhorn

    PS: Das gleiche passiert übrigens auch bei anderen Signalen, aber bei der Sinus-Kurve war es besonders gut zu sehen.



  • Ich zähl mal ein paar Sachen auf, die mir einfallen:

    - FFT arbeitet nur mit 2^n samples
    - DFT (also auch FFT) berechnet nicht das Spektrum deines Signals, sondern einer periodischen Fortsetzung deines Signals. Wenn durch dieses Fortsetzen also Sprünge auftreten, so verschmiert dir das dein Spektrum. Genau funktioniert das also nur, wenn 2^n Samples genau eine (oder m) Perioden sind.
    - wenn diese 2^n Werte nicht voll sind, wird manchmal der Rest mit Nullen aufgefüllt. Dies führt zu einer höheren Auflösung im Frequenzbereich (welche aber nur durch Interpolation zustande kommt). Es kann dir jedoch deine Periode versauen.
    - Beim Erstellen der Frequenz das Abtasttheorem eingehalten?
    - Quantisierungsfehler kann man vernachlässigen?
    - Ergebnis der FFT ist komplex, die Rücktransformation müsste wieder reel sein

    Die Bib kenne ich natürlich nicht und kann dazu nichts sagen.


Anmelden zum Antworten