Exercise 5.5Z: Complexity of the FFT
Der FFT–Algorithmus (Fast Fourier Transform) realisiert eine Diskrete Fouriertransformation mit dem kleinstmöglichen Rechenaufwand, wenn der Parameter N eine Zweierpotenz ist. Im Einzelnen sind zur Durchführung einer FFT folgende Rechenschritte notwendig:
- Die FFT geschieht in log2 N Stufen, wobei in jeder Stufe die genau gleiche Anzahl an Rechenoperationen durchzuführen ist.
- Die Grafik zeigt die dritte und letzte Stufe für das Beispiel N=8. Man erkennt, dass in dieser und auch den anderen Stufen jeweils N/2 Basisoperationen durchzuführen sind.
- In jeder Basisoperation, die man häufig auch als Butterfly bezeichnet, werden aus den beiden komplexen Eingangsgrößen E1 und E2 zwei komplexe Ausgänge berechnet:
- A1=E1+E2⋅wμ,
- A2=E1−E2⋅wμ.
- Hierbei bezeichnet w=e−j2π/N den komplexen Drehfaktor. Für das Beispiel N=8 hat dieser den Wert w=e−j⋅π/4=cos(45∘)−j⋅sin(45∘).
- Der Exponent μ dieses komplexen Drehfaktors kann alle ganzzahligen Werte zwischen 0 und N/2−1 annehmen. Für N=8 gilt:
- w0=1,w1=1/√2−j⋅1/√2,w2=−j,w3=−1/√2−j⋅1/√2.
Mit dieser Aufgabe sollen die für die FFT erforderliche Anzahl von Rechenoperationen (OFFT) ermittelt und mit dem für die DFT angebbaren Wert ODFT≈8⋅N2 verglichen werden.
Zu beachten ist:
- Sinnvollerweise werden die Potenzen von w vor dem eigentlichen Algorithmus berechnet und in einer Lookup–Tabelle abgelegt. Die hierfür notwendigen Operationen sollen deshalb unberücksichtigt bleiben.
- Die Bitumkehroperation – eine Umsortierung, die vor der ersten Stufe durchzuführen ist – soll bei dieser Abschätzung ebenfalls nicht berücksichtigt werden.
Hinweise:
- Die Aufgabe gehört zum Kapitel Fast-Fouriertransformation (FFT).
- Sollte die Eingabe des Zahlenwertes „0” erforderlich sein, so geben Sie bitte „0.” ein.
Fragebogen
Musterlösung
- (R1+j⋅I1)+(R2+j⋅I2)=(R1+R2)+j⋅(I1+I2)⇒AA=2_.
(2) Eine jede komplexe Multiplikation benötigt vier reelle Multiplikationen und zwei reelle Additionen:
- (R1+j⋅I1)(R2+j⋅I2)=(R1⋅R2−I1⋅I2)+j⋅(R1⋅I2+R2⋅I1)⇒AM=2,MM=4_.
(3) Die Basisoperationen lauten mit den komplexen Eingangsgrößen E1, E2 und wμ:
- A1=E1+E2⋅wμ,A2=E1−E2⋅wμ.
Dies bedeutet eine komplexe Multiplikation und zwei komplexe Additionen: aB=2,mB=1_.
(4) Im Gegensatz zu den ersten Computern nimmt heute eine Multiplikation keine wesentlich größere Rechenzeit in Anspruch als eine Addition bzw. Subtraktion.
Mit den Ergebnissen der Teilaufgaben (1), (2) und (3) erhält man für die Gesamtzahl der Rechenoperationen:
- OB=aB⋅AA+aB⋅(AM+MM)=2⋅2+1⋅6=10_.
(5) Insgesamt gibt es log2 N Stufen, in denen jeweils N/2 Basisoperationen auszuführen sind:
- OFFT=log2N⋅N2⋅OB=5⋅N⋅log2N
- ⇒OFFT(N=16)=5⋅16⋅4=320_,OFFT(N=1024)=5⋅1024⋅10=51200_.
(6) Der Rechenzeitgewinn der FFT gegenüber der herkömmlichen DFT ergibt sich zu:
- GFFT=ODFTOFFT=8⋅N25⋅N⋅log2N=1.6⋅Nlog2N
- ⇒GFFT(N=16)=1.6⋅164=6.4_,GFFT(N=1024)=1.6⋅102410≈164_.