Full Transcript

# Algorithmus für die schnelle Fourier-Transformation (FFT) Die schnelle Fourier-Transformation (FFT) ist ein effizienter Algorithmus zur Berechnung der diskreten Fourier-Transformation (DFT). Die DFT zerlegt eine Sequenz von Werten in Komponenten mit unterschiedlichen Frequenzen. Die FFT wird in v...

# Algorithmus für die schnelle Fourier-Transformation (FFT) Die schnelle Fourier-Transformation (FFT) ist ein effizienter Algorithmus zur Berechnung der diskreten Fourier-Transformation (DFT). Die DFT zerlegt eine Sequenz von Werten in Komponenten mit unterschiedlichen Frequenzen. Die FFT wird in vielen Bereichen eingesetzt, z. B. in der Signalverarbeitung, der Bildverarbeitung und der Datenanalyse. ## DFT Die DFT einer Sequenz von N komplexen Zahlen $x_0, x_1,..., x_{N-1}$ ist eine Sequenz von N komplexen Zahlen $X_0, X_1,..., X_{N-1}$, die durch die folgende Formel definiert ist: $X_k = \sum_{n=0}^{N-1} x_n e^{-j2\pi kn/N}$ wobei $j$ die imaginäre Einheit ist. ## FFT Die FFT ist ein Divide-and-Conquer-Algorithmus, der die DFT in $O(N \log N)$ Zeit berechnet. Die FFT basiert auf der Beobachtung, dass die DFT in kleinere DFTs zerlegt werden kann. Wenn $N$ beispielsweise eine Zweierpotenz ist, kann die DFT in zwei DFTs der Größe $N/2$ zerlegt werden. Diese DFTs können dann rekursiv berechnet werden, bis die DFTs die Größe 1 haben. Die DFT einer einzelnen Zahl ist die Zahl selbst. Es gibt viele verschiedene FFT-Algorithmen, aber alle basieren auf demselben Grundprinzip. Der gebräuchlichste FFT-Algorithmus ist der Cooley-Tukey-Algorithmus. Der Cooley-Tukey-Algorithmus ist ein rekursiver Algorithmus, der die DFT in zwei DFTs der Größe $N/2$ zerlegt. ## Implementierung Hier ist eine Python-Implementierung des Cooley-Tukey-Algorithmus: ```python import cmath def fft(x): N = len(x) if N