Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

Difference between revisions of "Aufgaben:Exercise 5.5Z: Complexity of the FFT"

From LNTwww
(No difference)

Revision as of 23:01, 29 November 2020

Letzte Stufe der FFT für N=8

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+E2wμ,
A2=E1E2wμ.
  • Hierbei bezeichnet  w=ej2π/N  den komplexen Drehfaktor. Für  N=8  ergibt sich der Wert  w=ejπ/4=cos(45)jsin(45).
  • Der Exponent  μ  für diesen komplexen Drehfaktor kann alle ganzzahligen Werte zwischen  0  und  N/21  annehmen. Für  N=8  gilt:
w0=1,w1=1/2j1/2,w2=j,w3=1/2j1/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  ODFT8N2  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.




Hinweis:



Fragebogen

1

Wieviele reelle Additionen  (AA)  erfordert eine komplexe Addition?

AA= 

2

Wieviele reelle Additionen  (AM)  und Multiplikationen  (MM)  sind für eine komplexe Multiplikation erforderlich?

AM= 

MM= 

3

Wieviele komplexe Additionen/Subtraktionen  (aB)  erfordert eine einzige Basisoperation („Butterfly”)?
Wieviele komplexe Multiplikationen  (mB)  sind pro Basisoperation notwendig?

aB= 

mB= 

4

Wieviele Rechenoperationen  (Additionen, Subtraktionen, Multiplikationen gleichermaßen)  erfordert eine Basisoperation?

OB = 

5

Wieviele reelle Operationen  (OFFT)  erfordert der gesamte FFT–Algorithmus? Welche Werte ergeben sich für  N=16  und  N=1024?

N=16:OFFT = 

N=1024:OFFT = 

6

Wie groß ist der Zeitgewinn  GFFT=ODFTOFFT  für  N=16  und  N=1024?

N=16:GFFT = 

N=1024:GFFT = 


Musterlösung

(1)  Jede komplexe Addition erfordert zwei reelle Additionen:

(R1+jI1)+(R2+jI2)=(R1+R2)+j(I1+I2)AA=2_.


(2)  Eine jede komplexe Multiplikation benötigt vier reelle Multiplikationen und zwei reelle Additionen:

(R1+jI1)(R2+jI2)=(R1R2I1I2)+j(R1I2+R2I1)AM=2,MM=4_.


(3)  Die Basisoperationen lauten mit den komplexen Eingangsgrößen  E1E2  und  wμ:

A1=E1+E2wμ,A2=E1E2wμ.
  • 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=aBAA+aB(AM+MM)=22+16=10_.


(5)  Insgesamt gibt es  log2 N Stufen, in denen jeweils  N/2  Basisoperationen auszuführen sind:

OFFT=log2NN2OB=5Nlog2N
OFFT(N=16)=5164=320_,OFFT(N=1024)=5102410=51200_.


(6)  Der Rechenzeitgewinn der FFT gegenüber der herkömmlichen DFT ergibt sich zu:

GFFT=ODFTOFFT=8N25Nlog2N=1.6Nlog2N
GFFT(N=16)=1.6164=6.4_,GFFT(N=1024)=1.6102410164_.