Sie sind auf Seite 1von 8

Prof. Dr.

Elmar Mller-Horsche FH Augsburg

Diskrete FourierTransformationen

Bedeutung der diskreten und schnellen Fouriertransformationen (DFT und FFT) FFTs sind die am hufigsten gebrauchten mathematischen Algorithmen des Alltags. Myriaden solcher Transformationen werden zum Erstellen komprimierter Musik (mp3) oder komprimierter Bilder (jpeg) durchgefhrt. Bei der Schwingungsanalyse gehren sie zum Alltag des Messingenieurs (Spektralanalyse). Komplexe Zahlen (Wiederholung) werden als Punkte in der komplexen Zahlenebene dargestellt. Hier sind vor allem komplexe Zahlen mit Betrag 1 interessant. Sie liegen auf dem Einheitskreis. Ihre Phasen nennen wir jetzt mal x. Das ist der Winkel zur Rechtsachse hin (= reelle Achse). Nach Euler kann man schreiben:
z
z*

z2 z 2x x -3x

cos x cos x

j sin x j sin x

e jx e
jx

z*

(1)

z*

z* ist dabei die zu z konjugiert komplexe Zahl, die durch Vorzeichenwechsel beim Imaginrteil oder durch Spiegelung an der reellen Achse entsteht. Beim Potenzieren solcher Zahlen werden nur die Phasen vervielfacht. z2 hat z.B. die Phase 2x, (z*)3 die Phase 3x. Die Punkte drehen sich also auf dem Einheitskreis beim Potenzieren. Komplexe Fourierkoeffizienten In den trigonometrischen Reihen reeller 2 -periodischer Funktionen kommen nur reelle a- und b-Koeffizienten vor:

f ( x) an bn
0 0.5 1 x/2P i 1.5 2

f (x n 2 ) 1
2

a0 2 dx

(an cos nx bn sin nx)


n 1

f ( x)
0

cos nx sin nx

(2)

n 0,1..

b0

Aus ihnen kann man folgendermaen komplexe Fourierkoeffizienten c konstruieren (nicht um die Studenten zu rgern, sondern weil die Formeln viel ergonomischer werden und man sich viel Schreib- und Rechenarbeit erspart!). In einem komplexen c sind dabei die beiden reellen Zahlen a und b zusammengefasst:
cn : an 1 2 j bn 2
2 wg (2)

1 2
jnx

f ( x) (cos nx
0

j sin nx)dx

wg (1)

(3)
n 0,1, 2...

f ( x) e
0

dx

Prof. Dr. Elmar Mller-Horsche FH Augsburg

Diskrete FourierTransformationen

Diskrete Fouriertransformation wird die numerische Integration von Integral (3) mit Hilfe der Treppenstufenmethode genannt. Dies wird notwendig, wenn die Integrale in (2) oder (3) analytisch nicht mehr ausgewertet werden knnen, oder wenn von vorneherein die Funktionswerte nur punktweise vorliegen, also z.B. bei elektronischer Datenerfassung. Das Integrationsintervall 0 .. 2 wird wie gewohnt in N gleich breite Streifen unterteilt, die Funktionswerte am linken Streifenrand sollen y k heien, k = 0 .. N-1. N hat oft den Wert 512, 1024 usw., lsst sich also als 2erPotenz schreiben: N = 2m. Um nicht neue Buchstaben einfhren zu mssen, nennen wir das Ergebnis der numerischen Integration wiederum c, behalten aber im Hinterkopf, dass es sich um eine Nherung der komplexen Fourierkoeffizienten handelt. 2 xk : k yk : f ( xk ) k 0,1..N 1 N

cn cn

1 2 1 2

N 1

f ( xk ) e
k 0 N 1

jnxk

x 2 N

1 2

f ( x) e
0 j 2 nk N

jnx

dx

(4)

yk e
k 0

jn

2 k N

1N 1 e Nk 0

yk

Die blaue Formel in (4) stellt genau die Diskrete Fouriertransformation (DFT) dar. Mithilfe des sog. Schnrkelfaktors (twiddle factor im Englischen) w : e werden:
j 2 N

kann die DFT in Matrixschreibweise dargestellt

c0 c1
Beispiel N=4
j

1 1 1 1 N .
1

1 w w .
1 2

1 w w .
1 2 4

. . . .
2

1 w w w( N
N 1 2N 2

y0 y1 y2 . yN
1

c2 .
j

e
1

2 4

.
1) ( N 1)

cN
1 j 1 j

wN

w2 N c

(5)

1 j 1 j

1 1 1 1

krzer:

1 1 1

1 F y N 0,1..N 1

Matrix F hat dabei die komplexen Komponenten:

Fnk

wn k

n, k

Eigentlich msste in (5) der Index n bei den cs bis unendlich laufen (s. Formel 3). Beim Versuch, die Matrix F nach unten zu verlngern, stellt man aber fest, dass sich die Zeilen wiederholen. Zeilenindex N z.B. wrde gem wN k e j 2 k 1 fr alle Spalten k lauter Einsen enthalten genau wie Zeilenindex 0, Zeilenindex N+1 ergbe dieselben Zahlen wie Zeilenindex 1 usw. Entsprechend wrde sich im Spaltenvektor c die Zahlenfolge ab c N wiederholen. Man erkennt: Aus N reellen Funktionswerten yk (k=0,1 .. N-1) lassen sich nur N verschiedene komplexe Fourierkoeffizienten cn (n=0,1 .. N-1) mittels DFT bestimmen

Prof. Dr. Elmar Mller-Horsche FH Augsburg

Diskrete FourierTransformationen

Eigenschaften der DFT-Matrix F (N geradzahlig) Zeile 0 1 2 3 4 5 6 7 N/2 = 8 9 10 11 12 13 14 N -1 = 15 In Polardiagrammen dargestellt ist oben die Matrix F mit N=16. Zeile 0 sowie Spalte 0 bestehen immer aus lauter Einsen. Der Schnrkelfaktor w befindet sich immer an Indexposition 1,1 (rot). Mit ihm ergibt sich Zeile 1 durch Rotation um jeweils den roten Winkel (2 /16 = 22,5 im Beispiel). Die gesamte Zeile 2 ergibt sich durch Winkelverdopplung von Zeile 1, Zeile 3 durch Winkelverdreifachung von Zeile 1 usw. Man erkennt: In Zeile cN/2 stehen 1, -1 im Wechsel. Der untere Rest (Zeile 9 .. 15) der Matrix ergibt sich durch Spiegelung der Zeilen 7 .. 1 an dieser Zeile 8. Die einzelnen Polardiagramme werden dabei auch um die reelle Achse gespiegelt. Dem entspricht die mathematische Operation konjugiert komplex, wie eingangs erwhnt. Die gesamte Matrix ist auerdem symmetrisch (transponierte Matrix FT= F). In Formeln: F( N n ) k * Fnk
c( N
n)

Spiegelsymmetrie bzgl. mittlerer Zeile Die cs sind damit auch symmetrisch bezglich cN/2 !

1 N 1 N

F( N
k

n)k

yk cn

1 N

F( N
k

n)k

* yk

(6)

Fnk yk
k

(y k und N reell!)

Prof. Dr. Elmar Mller-Horsche FH Augsburg

Diskrete FourierTransformationen

Eigenschaften des Vektors c der komplexen Fourier-Koeffizienten Bsp.: abfallender Sgezahn Amplitude = 16, N = 16
16 8 0 8 16

Wie in der 2. Zeile von (6) gezeigt, ist auch c wie F spiegelsymmetrisch bezglich der mittleren Komponente c N/2 (sofern man die komplexen Komponenten von c auch wieder als Polardiagramme darstellen wrde) , also c(N-n)* = cn. Verwendet wurde dabei die komplexe Rechenregel: (uvw)* = u*v*w* (u, v, w komplex) sowie r* = r fr reelles r. Auerdem mssen c 0 und cN/2 reell werden, da die entsprechenden Zeilen in F nur aus reellen Zahlen bestehen 1 ). Sie heien: ( F0 k 1; FN 2,k c0 = a0/2 cN/2 DC-Anteil Oberwellenrest (7)

16 14 12 10 8 6 4 1 1 1 1 1 1 1 1

1 1 5, 03 j 2, 41 j j 0, 41 j 0, 2 j 1 0, 2 j 0, 41 j 0, 67 j 1 j 2, 41 j 5, 03 j 1 1, 50 j 0, 67 j

Alle Informationen stecken also bereits in c0 ... cN/2. Der Rest des Vektors ist das konjugiert Komplexe der oberen Hlfte. Der Index n gibt aber die Frequenz der zugehrigen Oberwelle an. Die fett gedruckte Erkenntnis spiegelt damit schon ein wichtiges Theorem in der Signaltechnik wieder: Wenn ich N quidistante Punkte eines periodischen Signals kenne, so kann ich nur Amplituden und Phasen bis zur Oberwelle mit N/2-facher Frequenz der Grundwelle bestimmen (Nyquist-Theorem). Anwendung: ich will Musik bis 20kHz analysieren (= hchster hrbarer Ton), dann muss ich das Mikrofonsignal mindestens mit 40 kHz abtasten, also alle 25 s das Signal digitalisieren (ist bei hochwertigen Audio-wav-files auch ungefhr der Fall).

1 F N

2 0 2 4 6 8 10 12 14

1 1, 50 j 1 1

Gesamtamplituden und Phasen Bei den reellen Fourierkoeffizienten gibt es die Mglichkeit, Gesamtamplituden An und Phasen n anstelle von an und bn zu verwenden:

Amplitudenspektrum des obigen Sgezahns


15 10 5 0

f ( x)

a0 2 a0 2

(an cos nx bn sin nx)


n 1

An cos(nx
n 1

n)

(8)

An
0 5

an

bn

2 n

arctan

bn an

Phasenspektrum
90 60 30 0

Die letzte Zeile lsst sich aber auch leicht direkt aus den c n bestimmen, wie ein Blick auf die Definition (3) zeigt. Zusammengefasst mit (7) ergibt sich schlielich:
An A0 2 cn
n

arg cn
AN
2

n 1... cN
2

N 1 2
Oberwellenrest

(9)

c0 DC-Anteil

Fr den Praktiker sind diese Gren meist interessanter als die a- und b-Koeffizienten. Sie ergeben sich gem (9) direkt und einfach aus den cs und man kann aus ihnen sofort die wichtigen Amplituden- und Phasenspektren ableiten.

Prof. Dr. Elmar Mller-Horsche FH Augsburg

Diskrete FourierTransformationen

Inverse diskrete Fouriertransformation (IDFT): wie bekomme ich y k wieder aus cn? Mithilfe der Inversen Matrix F-1 natrlich. Und die ergibt sich relativ einfach im Wesentlichen durch konjugiert komplex Bildung jedes Elementes von F: F*F = N1
1 1 1 1 1 1 1 1 4 1 j 1 j 0 1 1 1 1 0 1 j 1 j 0 1 j 1 j 0 4 0 0 1 1 1 1 0 0 4 0 1 j 1 j 0 0 0 4

Beispiel N=4

(10)
wg (5) N 1

wobei F* aus den Elementen Fnk* besteht. Beweis:


N 1

F* F

nk i 0 N 1

F *ni Fik
i 0 j 2 N ni j 2 N

( w*) n i wi k
ik N 1 j i 2 (n k ) N

e
i 0

e
i 0

Auf der Diagonalen ist n=k und die Summe besteht aus lauter Einsen. Fr n k muss die Formel fr geometrische Summen angewendet werden mit dem Resultat:
geometrische Summe:
N 1

N 1

F* F

ai
i 0

1 a 1 a

nk i 0

i 2 (n k ) N

1 e

2 (n k ) N N j 2 (n k ) N

1 ej2
j

(n k )

1 e F* F
nk

zusammengefasst :

N 0

1 e fr n k fr n k

2 (n k ) N

Mit diesen Resultaten wollen wir Gleichung (5) von links mit F* multiplizieren und erhalten: 1 1 N F* c F* F y F* F y y y N N N y F* c oder :
wg (5) N 1 N 1

yk
n 0 wg (6)

( w*)
N 1 2

nk

cn
n 0 j 2 nk N

2 nk N

cn
j 2 N k N 2

(11)

c0
n 1

cn e

2 ( N n) k N

cn *

cN / 2

In der letzten Zeile wurde die Summe in 2 Hlften aufgespalten (z.B. N=16: 1...7 und 15...9) und die Symmetrie (6) der c n wurde ausgenutzt (z.B. c3 = c13* oder c13 = c3*). (11) kann weiter vereinfacht werden:
e e
j 2 ( N n) k N 2 nk N wg (3) j 2 k

e
j

2 nk N

ej2 cn *

2 n k wg (4) N 1

j xk n

cn e an 2 e

2 ( N n) k N

wg (4)

cn e j xk n cn * e e
j xk n j xk n

j xk n

jbn
j xk n

e j xk n e 2
j xk n

an

jbn

an e
j 2 N k N 2

2 e j xk n e bn 2j cos k cos

an cos nxk N 2 2 N
wg (4)

bn sin nxk cos N xk 2

ej

( 1) k

Prof. Dr. Elmar Mller-Horsche FH Augsburg

Diskrete FourierTransformationen

Trigonometrische Interpolation Setzt man die Vereinfachungen in (11) ein, so erhlt man die Formel fr die sog. trigonometrische Interpolation:
N 1 2

yk

c0
n 1 wg (8)

an cos nxk
N 1 2

bn sin nxk

cN / 2 cos

N xk 2

(12)

N xk 2 n 1 Mithilfe der aus der DFT gewonnenen Koeffizienten c n oder (an,bn) oder (An, n) kann man also Grundwelle cos x und Oberwellen cos nx so zu einer Gesamtfunktion g(x) berlagern, dass g(x) exakt durch alle vorgegebenen Wertepaare (x k,yk) durchgeht. Solche Funktionen nennt man Interpolationsfunktionen. A0 An cos(nxk
n)

AN / 2 cos

Beispiel: Sgezahn (N=16)


15

N 1 2

g ( x) : A0
90

An cos(nx
n 1

n)

AN / 2 cos

N x 2

10

genherte DFT-Amplituden (N=16) exakte Fourierkoeffizienten

wg (12)
60 g ( xk )

yk

10

15

90

60

genherte DFT-Phasen exakte Phasen (immer 90 nur Sinuswellen)

30

10

15

30 Man beachte den Unterschied zur Fourierreihe: diese konvergiert gegen die zu analysierende Funktion f(x) (meistens) im gesamten 0 0 10 15 Bereich 0 x 52 . Bricht man die Fourierreihe zur Fouriersumme ab, so erhlt man eine Nherung, die zwar nahe bei f(x) liegt, mit dieser aber nur nicht vorhersehbare Schnittpunkte gemeinsam hat. Die trigonometrische Interpolation g(x) dagegen geht durch alle Sttzstellen (xk,yk) exakt durch, die den Dateninput der DFT bildeten. Fr groe N spielen diese Unterschiede allerdings keine Rolle mehr, die Amplituden und Phasen aus der DFT stimmen praktisch mit den exakten Fourierkoeffizienten (2) berein, wenn man Beispiele heranzieht, bei denen man (2) auch analytisch exakt bestimmen kann.

20 16 12 8 4 0 4 8 12 16 20 0

zu analysierende Funktion f(x) Sttzs tellen nach der Oberwelle n=8 abgebrochene Fourierreihe trigonometris che Interpolation N=16

0.1

0.2

0.3

0.4

0.5 x/2P i

0.6

0.7

0.8

0.9

Prof. Dr. Elmar Mller-Horsche FH Augsburg

Diskrete FourierTransformationen

Divide et Impera: Fast Fourier Transform (FFT) Teile und herrsche, dann fllt das herrschen leichter, meinten schon die Rmer. Gau erkannte 1805 die Mglichkeit der Arbeitsersparnis bei der Berechnung der DFT, Cooley und Tukey verffentlichten dann 1965 den legendren Algorithmus, der ihren Namen trgt. Sie spezialisierten sich auf den in der Praxis hufig auftretenden und schon anfangs erwhnten Spezialfall N=2m. Die Berechnung der 1 F y in (5) erfordert grob N 2 komplexe Matrixmultiplikation c N Multiplikationen und Additionen, also je ber 1Mio. Operationen bei N=1024. Man kann die F(N=1024)-Multiplikation aber auf die F(N=512)-Muliplikation zurckfhren, wie die folgende Rechnung zeigt. Dies spart ungeheuer! Im weiteren wird bei der Matrix F und beim Schnrkelfaktor w in Klammern dahinter geschrieben, fr welche Einteilung N die Gren gelten. Also F(1024) ist eine 1024x1024Matrix, w(1024) e . Der Trick besteht lediglich im Zusammenfassen der geraden Indizes k und der ungeraden in (4):
N 1

2 1024

Beispiel: N=8
w(4)7=w(4)3

Ncn
k 0

e
N 2 1

2 nk N

N 2 1

yk
m 0

e
j

2 n 2m N

y2 m e

2 n (2 m 1) N

y2 m

e
m 0 N 2 1

2 nm N 2

y2 m y2 m

2 2 j nm n N 2 1 N 2 N e m 0 n N 2 1 m 0

y2 m
nm

w N 2
m 0

nm

w N

w N 2

y2 m

w(N/2) = w(4) w(8)7= - w(8)3

In der letzten Zeile stehen aber im Wesentlichen zwei N/2-DFTs, jedenfalls solange n<N/2. Fr n N/2 ist die Periodizitt
w( N w( N 2) sowie w( N ) w( N ) zu bercksichtigen (s. Torten links). Man kann dann n auf den Bereich 0 n N 1 einschrnken und schreiben: 2
N n 2) 2 n
N n 2 n

w(8)

w(N) = w(8)

Ncn Nc N
2

N 2 1

w N 2
n m 0 N/2-DFT

nm

y2 m

w( N )

N 2 1

w N 2
m 0

nm

y2 m

(13)

N/2-DFT 2.Stufe: gemischte Addition

1. Stufe
y0 y2 .. yN-2 y1 y3 .. yN-1

2. Stufe
Nc0 Nc1 .. NcN/2-1 w0=1 w1 ... N/2-1 w w=w(N) NcN/2 NcN/2+1 .. NcN-1

F(N/2)

F(N/2)

Damit ist das Ziel erreicht. Man erhlt eine 2-stufige DFT. In der 1. Stufe wird mit den geraden y2m und den ungeraden y2m+1 je eine N/2-DFT durchgefhrt. In der 2. Stufe erfolgt die gemischte Addition gem (13). Am besten macht man sich das Verfahren in einem Diagramm deutlich. In der 2.Stufe bedeuten: Dnner Strich = Weiterleitung der Zahl nach rechts Dicker Strich = Multiplikation mit 1 und Weiterleitung Kasten = Multiplikation mit Zahl im Kasten und weiter Alle von links in einen Knoten einlaufende Striche werden addiert

Prof. Dr. Elmar Mller-Horsche FH Augsburg

Diskrete FourierTransformationen

Mehrstufige FFTs : Libellen und Schmetterlinge Libelle


F (4)
a b c d 1 1 1 1 1 j 1 j 1 1 1 1 1 j 1 j a b c d

a 1 (-1) j (-j) b c d

Schema 13 halbiert ungefhr den Rechenaufwand bei groen DFTs (z.B. N=1024). Es liegt natrlich nahe, die F(N/2)-Multiplikation nach demselben Schema in F(N/4)-Multiplikationen aufzuspalten usw. Zu beachten ist dabei, dass bei jeder neuen Stufe die Eingangswerte y k umgeordnet werden mssen. Im 3-stufigen Fall wre die Reihenfolge von oben nach unten z.B.: y0, y4, y8 .. y2, y6, y10 .. y1, y5, y9 .. y3, y7, y11 .. Beim betrachteten Spezialfall N=2m gelangt man so nach m-1 Stufen zur F(4) und nach m Stufen zur F(2). Mit dem bei (13) eingefhrten Diagrammstil kann man F(4) als Libelle (dragonfly) und F(2) als Schmetterling (butterfly) darstellen. Bei jeder neuen Stufe, die auf der linken Seite dazu kommt, mssen die zugehrigen Schnrkelfaktoren w bestimmt werden. Ihre Winkel verdoppeln sich jeweils von rechts nach links. So bekommt man fr N=16 letztendlich folgendes vllig in Schmetterlinge aufgelste Schema:
0000 1000 0100 1100 0010 1010 0110 1110 0001 1001 0101 1101 0011 1011 0111 1111 y0 y8 y4 y12 y2 y10 y6 y14 y1 y9 y5 y13 y3 y11 y7 y15
w(4) = e - j90=-j

Schmetterling
F(2) a b 1 1 1 1 a b

a b

- 45

-135

- 22,5 - 45 - 67,5

- 45

-112,5 - 135

-135

-157,5
- j45

16c0 16c1 16c2 16c3 16c4 16c5 16c6 16c7 16c8 16c9 16c10 16c11 16c12 16c13 16c14 16c15

w(8) = e

w(16) = e - j22,5

Die dicken schwarzen Striche bedeuten wieder (-1), die dicken roten (-j). Die Knoten wurden der bersichtlichkeit halber weggelassen, bei den Potenzen der Schnrkelfaktoren stehen aus demselben Grund nur die Phasen in den Kstchen. Man sieht, dass bei kompletter Zerlegung runter bis F(2) die Eingangswerte letztlich in sog. bit reverse order angeordnet werden mssen, die Binrzhler fr die Indizes also von links nach rechts arbeiten mssen. Der Deutlichkeit halber ist auf der linken Seite deshalb auch noch das Bitmuster der Indizes mit aufgefhrt. Man hat ausgerechnet, dass bei vlliger Zerlegung in Schmetterlinge die 1024-Punkte-DFT nur noch 0,4% der ursprnglichen Multiplikationen und nur noch 1% der ursprnglichen Additionen bentigt!