FFT-Algorithmus (PHP)


Fastest Fourier Transform in the West FFTW ist eine in C verfasste Bibliothek zur schnellen Berechnung der Diskreten Fouriertransformation (DFT) in einer oder mehreren Dimensionen für reellwertige oder komplexe Signale. Die Bibliothek wurde am MIT Laboratory for Computer Science von M. Frigo und St. G. Johnson entwickelt. Das Algebraprogramm MATLAB enthält ab Version 6 mit FFTW (Fastest Fourier Transform in the West) das zurzeit beste FFT-Programmpaket. In FFTW sind erste Ansätze zu einer architekturadaptiven FFT-Berechnung realisiert. In einer Initialisierungsphase wird ein „Berechnungsplan“ ermittelt, der die FFT-Berechnung an die Speicherhierarchie des jeweiligen Rechners anpasst. Abb. 1 zeigt einen Vergleich der normierten Laufzeiten der FFT-Berechnung von MATLAB 6 mit MATLAB 5.3 und der in C geschriebenen FFTW-Version. Wie man sieht, ist MATLAB 6 für lange Vektoren mehr als doppelt so schnell wie MATLAB 5.3. Der durch die Integration von FFTW in MATLAB entstandene Overhead ist dafür verantwortlich, dass die „reine“ C-Implementierung ein etwas besseres Laufzeitverhalten aufweist [1].

Exemplarisch sei hier der Algorithmus von Cooley und Tukey aus dem Jahre 1965 genannt. Der Algorithmus arbeitet in-place, das heißt, es wird nur ein Feld erforderlich sein. Anfangs befinden sich dort die Elemente des Signalvektors s, und im selben Feld sind nach Beendigung der Transformation die Fourierkoeffizienten s' zu finden.

s' = DFT· s

Eigentlich werden im Butterfly die Koeffizienten gar nicht normiert. Um aber zum selben Ergebnis wie mit Gleichung (1) zu gelangen, wird hier die symmetrische Normierung voreingestellt.

Ihre Eingabe:

Signaldatei s:

oder Signal s:


Ihr Ergebnis (01:29:56):

FFT, symmetrische Normierung

Eingabe:
 0.000

Resultat:
 0.000

Rechenzeit:

zirka 0.571 s

Literatur:

  1. Ernst Haunschmid, Herbert Karner, Stefan Katzenbeisser, Christoph Überhuber: Effizientes Lösen numerischer Probleme mit MATLAB 6. Institut für Angewandte und Numerische Mathematik an der TU Wien, 2000
  2. C-Bibliothek

PHP 5.1.2
Dr. O. Hochmuth
Rainer Schnabel
20.10.2008, 18:19:10