Kapitel 1 Fourier

Werbung
Kapitel 1
Fourier-Transformation
1.1
Einleitung
Die Fourier-Transformation (FT) ist wahrscheinlich das wichtigste Instrument aus der mathematischen Trick-Kiste schlechthin. Ihre Bedeutung liegt einmal darin, daß sich mit ihrer Hilfe einige der am häufigsten vorkommenden Operationen an mathematischen Funktionen, wie
z.B. Integration und Differentiation sowie Faltungs- und Filteroperationen, formal sehr leicht
durchführen lassen. Für die numerische Praxis ist jedoch vor allem der vor ein paar Jahrzehnten wiederentdeckte Algorithmus der Schnellen“ Fourier-Transformation wichtig, durch den
”
bei vielen Problemen tatsächlich Größenordnungen an Rechenzeit eingespart werden können.
Je nach der Anzahl der zu transformierenden Funktionswerte bzw. dem Definitionsgebiet der
Funktionen unterscheidet man zwischen Diskreter Fourier-Transformation, Fourier-Reihen und
Fourier-Integralen. Da wir in der Folge laufend von den Eigenschaften der Fourier-Transformation Gebrauch machen, werden in diesem Kapitel sowohl die grundlegenden Transformationsformeln als auch die wesentlichsten Eigenschaften (heuristisch) abgeleitet. Anschließend wird
ein Algorithmus für die Schnelle Fourier-Transformation besprochen.
1.2
Die Diskrete Fourier-Transformation
Es seien N beliebige (i.a. komplexe) Zahlenwerte f− N , f− N +1 , . . . , f N −1 gegeben, wobei der Ein2
2
2
fachheit halber angenommen wird, daß N gerade ist. (Die Überlegungen lassen sich jedoch auch
für ungerades N durchführen.) Bei den fj handelt es sich meist, aber nicht notwendigerweise,
um die Werte einer Funktion f an einer diskreten Menge von Stützpunkten xj .
Den fj werden eine gleiche Anzahl N transformierter Werte fen zugeordnet durch die Vorschrift
1
fen =
N
N
2
−1
X
e−
2πinj
N
fj ,
(1.1)
j=− N
2
1
2
KAPITEL 1. FOURIER-TRANSFORMATION
wobei n ebenfalls die Werte − N2 , − N2 + 1, . . . , N2 − 1 durchläuft. Die Menge der fen heißt FourierTransformierte oder Fourier-Koeffizienten der fj .
Die fen enhalten genau dieselbe Information wie die fj , denn es gilt die Umkehrformel (Inverse
Fourier-Transformation)
N
2
−1
X
fj =
e
2πinj
N
fen .
(1.2)
n=− N
2
Da in beiden Formeln die Indizes nur endlich viele diskrete Werte durchlaufen, heißen Gl. (1.1)
und (1.2) zusammen auch Diskrete Fourier-Transformation (DFT).
Die Gültigkeit von Gl. (1.2) kann man leicht durch Einsetzen verifizieren:
N
2
−1
X
e
2πinj
N
N
2
fe
=
n
n=− N
2
−1
X
−1
1 2X − 2πinj0
e N fj 0
N j 0 =− N
N
e
2πinj
N
n=− N
2
N
2
2
−1
N
2
X
=
(1.3)
fj 0
j 0 =− N
2
−1
1 X 2πin(j−j0 )
e N
N n=− N
(1.4)
2
= fj .
(1.5)
Die letzte Zeile ergibt sich aus der vorletzten, da die Summe über n nur für j = j 0 nicht
verschwindet,
N
2
−1
X
e
2πin(j−j 0 )
N
N
2
=
n=− N
2
−1
X
1 = N.
(1.6)
n=− N
2
0
Im Fall j6=j 0 setzt man e2πi(j−j )/N = z, summiert die auftretende geometrische Reihe und findet
N
2
−1
X
zn = z− 2
N
N
−1
X
zn = z− 2
n=0
n=− N
2
N
zN − 1
= 0,
z−1
(1.7)
da z N = 1.
1.2.1
Eigenschaften der DFT
Mittelwert
Für n = 0 ist e−2πinj/N = 1, also
−1
1 2X
e
f0 =
fj .
N j=− N
N
2
Das ist einfach der Mittelwert der fj .
(1.8)
1.3. FOURIER-REIHEN
3
Periodizität
Die Fourier-Koeffizienten wurden zunächst nur für − N2 ≤ n ≤ N2 − 1 definiert. Man kann sie
aber auch für beliebige n außerhalb dieses Bereiches berechnen, z.B. gilt
−1
−1
−1
1 2X − 2πinj − 2πiN j
1 2X − 2πinj
1 2X − 2πi(n+N )j
N
=
e
fj =
e N e N fj =
e N fj ,
N j=− N
N j=− N
N j=− N
N
fe
n+N
N
2
N
2
(1.9)
2
d.h.
fen+N = fen .
(1.10)
Also ist fen periodisch mit der Periode N .
Analog kann man bei der Rücktransformation den Index j beliebig wählen und findet
fj+N = fj .
(1.11)
h
i
Damit können die fj außerhalb des Definitionsbereiches − N2 , N2 − 1 periodisch fortgesetzt
werden.
DFT rein reeller Werte
Sind die Zahlen fj alle reell, so werden N reelle in N komplexe (= 2N reelle) Werte transformiert. Zwischen den fen muß es daher eine Beziehung geben:
fen
∗
−1
−1
1 2X − 2πinj ∗
1 2X − 2πi(−n)j
N
N
e
e
=
fj =
fj .
N j=− N
N j=− N
N
N
2
(1.12)
2
Also
fen
∗
= fe−n ,
(1.13)
d.h. die fen treten in komplex konjugierten Paaren auf. Insbesondere sind fe0 und fe− N rein reell.
2
1.3
Fourier-Reihen
h
i
Es sei f (x) eine (i.a. komplexwertige) Funktion über dem endlichen reellen Intervall − L2 , L2 .
Wir betrachten zunächst nur die Werte von f an N diskreten, äquidistanten Stützpunkten xj ,
fj = f (xj ),
(1.14)
mit
∆x =
L
N
(1.15)
4
KAPITEL 1. FOURIER-TRANSFORMATION
als Abstand zwischen den Stützpunkten und
L
j
N
xj = j∆x =
(1.16)
für j = − N2 , . . . , N2 − 1.
Da die f (xj ) einfach N Zahlen sind, können wir jedenfalls ihre DFT bilden,
N
2
N
−1
X
1
fen =
e−
2πinj
N
f (xj ),
(1.17)
j=− N
2
mit der Umkehrformel
N
2
−1
X
f (xj ) =
e
2πinj
N
fen .
(1.18)
n=− N
2
Wir setzen nun
∆k =
2π
L
(1.19)
und verwenden statt des Index n die N äquidistanten, diskreten k-Werte
kn = n∆k =
2π
n,
L
(1.20)
wobei wieder n = − N2 , . . . , N2 − 1. Damit läßt sich der Phasenfaktor schreiben als
e±i L n N j = e±ikn xj ,
2π
L
und aus den Fourier-Koeffizienten wird (mit
N
(1.21)
1
N
→
∆x
)
L
−1
1 2X
fen =
∆x e−ikn xj f (xj ).
L j=− N
(1.22)
2
Im Limes N → ∞ geht ∆x→0, und aus der Riemannsumme auf der rechten Seite wird ein
Integral. Wir bezeichnen die so erhaltenen Fourier-Koeffizienten der kontinuierlichen Funktion
f (x) mit fe(kn ):
1
fe(kn ) =
L
Z
L
2
−L
2
dx e−ikn x f (x).
(1.23)
Der zu x konjugierte“ Parameter kn kann hier in Schritten von ∆k eine abzählbare Menge von
”
Werten von −∞ bis +∞ auf der reellen Achse annehmen.1
1
Wenn x die Bedeutung einer Ortsvariablen hat, nennt man die kn gern Wellenzahlen.
1.3. FOURIER-REIHEN
5
h
i
Umgekehrt liegen für N → ∞ die xj dicht in − L2 , L2 , und es ist naheliegend, daß schließlich
für jedes beliebige x im Intervall gelten wird
f (x) =
∞
X
eikn x fe(kn ).
(1.24)
n=−∞
Diese Darstellung von f (x) nennt man Entwicklung in eine Fourier-Reihe.
fe(kn )
f (x)
−L/2
L/2
∆k
Abbildung 1.1: Fourier-Reihe. Originaldaten kontinuierlich, Fourier-Transformierte diskret.
1.3.1
Eigenschaften von Fourier-Reihen
Konvergenz
Im Gegensatz zum diskreten Fall, wo man für jeden endlichen Satz von Zahlen die DFT berechnen und diese Transformation auch wieder eindeutig umkehren kann, läßt sich nicht jede beliebige Funktion einer kontinuierlichen Variablen über einem endlichen Intervall in eine
Fourier-Reihe entwickeln. Schließlich kann eine überabzählbare Mannigfaltigkeit von Funktionswerten nicht ohne weiteres auf eine abzählbare Menge von Fourier-Koeffizienten reduziert werden. Ob (vorausgesetzt, die Fourier-Koeffizienten existieren überhaupt) und in welchem Sinn
die Fourier-Reihe konvergiert, hängt von den Annahmen ab, die über f gemacht werden. Ganz
allgemein gilt, wenn f nur hinreichend glatt ist, daß dann die Darstellung punktweise gegen
f (x) konvergiert und sogar gliedweise differenziert werden darf.
Ist f wenigstens stückweise stetig mit nur endlich vielen Sprungstellen im betrachteten
Intervall, so konvergiert die Fourier-Reihe ebenfalls punktweise, nimmt aber an den Unstetigkeitsstellen den Mittelwert von rechtem und linkem Grenzwert an.
Andererseits lassen sich z.B. verallgemeinerten Funktionen (Distributionen) immer Fourierentwickeln, wenn man nur den Konvergenz- bzw. Gleichheitsbegriff entsprechend weit faßt.
Periodizität
Bisher
iwurde nichts über das Verhalten der Funktion f (x) außerhalb des Grundintervalls
h
L L
− 2 , 2 ausgesagt, ja f muß dort überhaupt nicht definiert sein. Wir können aber in die Fourier-
6
KAPITEL 1. FOURIER-TRANSFORMATION
Entwicklung von f natürlich beliebige x-Werte einsetzen. Da die k-Werte so gewählt sind, daß
kn L = 2πn ist, gilt, ähnlich wie bei der inversen DFT,
f (x + L) = f (x).
(1.25)
Mit anderen Worten, die Fourier-Reihe definiert eine periodische Fortsetzung von f (x). Deshalb
wird oft von vornherein angenommen, daß f eine periodische Funktion mit Periode L ist. Im
Gegensatz zur DFT sind die Entwicklungskoeffizienten fe(kn ) aber i.a. nicht periodisch in k.
1.3.2
Diskrete Zeitreihen und die Nyquist-Frequenz
Bei Fourier-Reihen besteht eine gewisse Asymmetrie zwischen Original und Transformierter,
die zu zwei verschiedenen Betrachtungsweisen führt.hWir haben
bisher angenommen, daß eine
i
L L
Funktion f (x) über dem kontinuierlichen Intervall − 2 , 2 gegeben ist, und ihr als Fourier-
Transformierte die abzählbare Menge der Fourier-Koeffizienten fe(kn ) zugeordnet (Abb. 1.1).
Diese Stützpunkte“ im k-Raum sind äquidistant und überdecken die ganze reelle Achse.
”
fe(ω)
f (tn)
∆t
−Ω/2
Ω/2
Abbildung 1.2: Fourier-Reihe. Originaldaten diskret, Fourier-Transformierte kontinuierlich.
In der Praxis tritt häufig auch der umgekehrte Fall auf, bei dem die Rollen von Original
und Transformierter vertauscht sind (Abb. 1.2). Bei den Originaldaten handelt es sich meist um
die Werte einer zeitabhängigen Funktion, die nur zu diskreten Zeitpunkten tn = n∆t gemessen
wird
. . . , f (t−2 ), f (t−1 ), f (t0 ), f (t1 ), f (t2 ), . . .
(1.26)
Dabei ist 1/∆t die Abtastrate (Sampling Rate). Wir können durch Anwendung unseres Wissens
über Fourier-Reihen sofort sagen, daß sich die Zeitreihe an den diskreten Zeitpunkten tn durch
eine Superposition (Integral)
h
i von Schwingungen mit Frequenzen in einem kontinuierlichen, aber
Ω Ω
endlichen Intervall − 2 , 2 darstellen läßt,
1Z 2
dω e−iωtn fe(ω),
Ω − Ω2
Ω
f (tn ) =
(1.27)
1.4. FOURIER-INTEGRALE
7
mit dem Spektrum“
”
∞
X
fe(ω) =
eiωtn f (tn ).
(1.28)
n=−∞
Zwischen der Frequenz Ω und der Abtastrate 1/∆t besteht ein analoger Zusammenhang wie
früher zwischen L und ∆k,
∆t =
2π
.
Ω
(1.29)
Zur Darstellung einer mit endlicher Abtastrate gemessenen Zeitreihe genügt also ein endlicher Frequenzbereich. Man nennt daher das Spektrum bandlimitiert (band-limited) und bezeichnet die obere bzw. untere Grenzfrequenz auch als Nyquist-Frequenz,
ωNyquist =
Ω
π
=
.
2
∆t
(1.30)
D.h. die höchste zur Darstellung der f (tn ) benötigte Frequenz entspricht genau der halben
Abtastrate.
1.4
Fourier-Integrale
Es sei nun f (x) eine (komplexwertige) Funktion, die auf hder ganzen
reellen Achse definiert ist.
i
L L
Dann können wir zunächst f auf ein beliebiges Intervall − 2 , 2 einschränken und dort in eine
Fourier-Reihe entwickeln,
fe(kn ) =
f (x) =
Z
L
2
−L
2
dx e−ikn x f (x),
(1.31)
∞
1 X
eikn x fe(kn ),
L n=−∞
(1.32)
wobei wir diesmal den Normierungsfaktor 1/L bei der Rücktransformation angebracht haben.
Es sei ferner k beliebig reell und fest. Dann können wir eine Folge von Intervallen mit L → ∞
so wählen, daß k immer gleich einem der diskreten kn ist, und erhalten im Limes als FourierTransformierte von f (x)
fe(k) =
Z
∞
−∞
dx e−ikx f (x).
Umgekehrt gilt für ein beliebiges x, wenn L einmal so groß ist, daß |x| ≤
f (x) =
1 X
∆k eikx fe(k),
2π {kn }
(1.33)
L
2
(mit
1
L
→
∆k
),
2π
(1.34)
8
KAPITEL 1. FOURIER-TRANSFORMATION
wobei über alle diskreten k-Werte summiert wird, die mit der momentanen Intervallänge L
kompatibel sind. Im Limes L → ∞ erhalten wir schließlich die Inverse Fourier-Transformation
f (x) =
1
2π
Z
∞
−∞
dk eikx fe(k).
(1.35)
An den Fourier-Integralen ist bemerkenswert, daß sowohl f (x) als auch fe(k) über der ganzen
reellen Achse definierte Funktionen sind und in den Transformationsformeln—bis auf den Normierungsfaktor 1/2π—vollkommen symmetrisch behandelt werden. Hinsichtlich der Konvergenz
gilt ähnliches wie bei den Fourier-Reihen: Ist f stetig und absolut integrierbar, dann konvergiert die Rücktransformation punktweise gegen f (x). Will man hingegen unter dem Integral
differenzieren, müssen stärkere Voraussetzungen gemacht werden. Ebenso haben Distributionen
stets eine Fourier-Transformierte.
1.5
Rechnen mit Fourier-Transformierten
Der große Vorteil der Fourier-Transformation besteht darin, daß einige der wichtigsten mathematischen Operationen mit Funktionen sich im Fourier-Raum formal sehr einfach durchführen
lassen. Das sind vor allem Differentiation und Integration sowie Faltungsoperationen. Ersteres
erklärt die Bedeutung der FT bei der Lösung von (gewöhnlichen und partiellen) linearen Differentialgleichungen. Die Entfaltung“ wird vor allem für die Korrektur experimenteller Meßdaten
”
gebraucht.
Alle Operationen können, mit entsprechenden Änderungen, auf DFT, Fourier-Reihen und
Fourier-Integrale angewandt werden. Wir leiten der Einfachheit halber die Beziehungen nur für
Fourier-Integrale ab; im Fall von Fourier-Reihen und der DFT sind Integrale durch Summen zu
ersetzen bzw. bei der Faltung Komplikationen durch endliche Intervallgrenzen zu berücksichtigen.
1.5.1
Differentiation und Integration
Es sei f (x) eine Funktion über der reellen Achse mit der Fourier-Darstellung
f (x) =
1 Z∞
dk eikx fe(k).
2π −∞
(1.36)
Wir differenzieren beide Seiten der Gleichung und erhalten, vorausgesetzt daß Differentiation
und Integration vertauscht werden dürfen,
!
1 Z∞
1 Z∞
d ikx e
f (k) =
dk
e
dk eikx (ik)fe(k).
f (x) =
2π −∞
dx
2π −∞
0
(1.37)
Also ist offenbar (ik)fe(k) die Fourier-Transformierte von f 0 (x),
ff0 (k) = ik fe(k).
(1.38)
1.5. RECHNEN MIT FOURIER-TRANSFORMIERTEN
9
D.h. Differentiation geht im Fourier-Raum in Multiplikation mit dem Faktor ik über; aus einem linearen Differentialoperator wird so ein Polynom in ik. Analog entspricht—mit gewissen
Einschränkungen—der Integration beim Übergang in den Fourier-Raum die Division durch ik.
Beispiel: Lösung der Poisson-Gleichung in 1D
Es sei eine eindimensionale Ladungsverteilung ρ(x) gegeben. Das zugehörige Potential φ(x) ist
durch die Poisson-Gleichung,
φ00 (x) = −2ρ(x),
(1.39)
bestimmt. Durch Transformation in den Fourier-Raum wird daraus
e
e
= −2ρ(k).
−k 2 φ(k)
(1.40)
Die Lösung des Problems ergibt sich also sofort aus
2
e
ρ(k).
(1.41)
k2
In der Praxis scheitert man allerdings oft daran, daß die Rücktransformation in den x-Raum
nicht geschlossen angegeben werden kann.
e
φ(k)
=
1.5.2
Faltungsintegrale
Es seien f (x) und g(x) zwei über der ganzen reellen Achse definierte komplexwertige Funktionen. Unter der Faltung von f und g versteht man das Integral
Z
h(x) =
∞
−∞
dy f (x − y) g ∗ (y).
(1.42)
Dafür schreibt man auch
h(x) = (f ∗g)(x).
(1.43)
Die Fourier-Transformierte von h(x) ist
e
h(k)
=
Z
Z
=
=
∞
−∞
∞
−∞
Z ∞
−∞
dx e
−ikx
Z
dx
∞
−∞
Z
−∞
dy f (x − y) g ∗ (y)
(1.44)
h
i∗
dy e−ik(x−y) f (x − y) e−i(−k)y g(y)
0 −ikx0
dx e
∞
0
f (x )
= fe(k) [ge(−k)]∗ .
Z
∞
−∞
0 −i(−k)y 0
dy e
0
(1.45)
∗
g(y )
(1.46)
(1.47)
Dabei haben wir die Variablentransformation x0 = x − y und y 0 = y durchgeführt. Wir lesen
daraus ab
fg
∗g (k) = fe(k) [ge(−k)]∗ .
(1.48)
10
KAPITEL 1. FOURIER-TRANSFORMATION
Sind f und g beide reell, so ergibt sich wegen Gl. (1.13)
fg
∗g (k) = fe(k) ge(k),
(1.49)
d.h. die Faltung geht im Fourier-Raum in ein einfaches Produkt über.
In der Praxis wird diese Beziehung oft zur Entfaltung“ experimenteller Messungen benützt.
”
Dabei ist h(x) das Meßsignal, f (x) die eigentlich interessierende physikalische Observable und
g(x) die sogenannte Instrumentenfunktion“, ein Artefakt, das die Meßergebnisse verfälscht.
”
Wenn g(x) bekannt ist, kann f (x) im Prinzip aus der Messung bestimmt werden, indem im
e
Fourier-Raum h(k)
durch ge(k) dividiert und dann rücktransformiert wird.
1.5.3
Korrelationsfunktionen
Wenn f und g zeitabhängige Funktionen sind, wird oft die Korrelationsfunktion betrachtet,
Z
h(t) =
∞
−∞
ds f (s + t) g ∗ (s),
(1.50)
d.h. die Werte von g zum Zeitpunkt s werden mit den Werten von f zum Zeitpunkt s + t
verknüpft. Beim Übergang in den Fourier-Raum ergibt sich, ähnlich wie bei der Faltung zweier
Funktionen,
e
h(ω)
= fe(ω) [ge(ω)]∗ .
(1.51)
Also ist auch die Fourier-Transformierte einer Korrelationsfunktion im wesentlichen ein Produkt.
Sind f und g verschieden, nennt man h die Kreuzkorrelation von f und g; ist f = g, heißt
h die Autokorrelationsfunktion von f . In diesem Spezialfall gilt
e
h(ω)
= |fe(ω)|2 ≥ 0.
(1.52)
Dieser Sachverhalt wird auch als Wiener–Khinchin Theorem bezeichnet. Die Größe |fe(ω)|2
nennt man das Powerspektrum von f . Offenbar zeichnen sich Autokorrelationsfunktionen durch
nichtnegative Spektren aus.
1.6
Die Schnelle Fourier-Transformation (FFT)
Wie sich im vorigen Abschnitt gezeigt hat, gehen bei der Transformation in den Fourier-Raum
die für die Behandlung linearer Differential- und Integralgleichungen wesentlichen Manipulationen, wie Differentiation, Integration und Faltung, sowie Filteroperationen in einfache algebraische Operationen über. Dadurch lassen sich diese Probleme oft formal recht einfach lösen. In
der Praxis ist damit aber meist nicht viel gewonnen, weil man die entsprechenden Transformationen nur in den seltensten Fällen analytisch durchführen kann. Numerische Methoden können
1.6. DIE SCHNELLE FOURIER-TRANSFORMATION (FFT)
11
andererseits bei größerem Datenumfang oder höherdimensionalen Problemen leicht zu einem
unvertretbar hohen Rechenaufwand führen. Glücklicherweise gibt es für die Diskrete FourierTransformation, auf die ja die numerischen Verfahren letztlich hinauslaufen, einen schnellen“
”
Algorithmus, eben die FFT (Fast Fourier-Transform), der wirklich um Größenordnungen effizienter sein kann als die gewöhnliche DFT. Somit bildet die FFT, in Verbindung mit den
Rechenregeln im Fourier-Raum, eines der leistungsfähigsten numerischen Verfahren schlechthin.
1.6.1
Alternative Indexkonvention
Wir haben im Abschnitt 1.2 die DFT von N Zahlen (N sei wieder gerade),
f− N , . . . , f−1 , f0 , . . . , f N −1 ,
2
(1.53)
2
definiert als
1
fen =
N
N
2
−1
X
e−
2πinj
N
fj .
(1.54)
j=− N
2
Genau dieselben Fourier-Koeffizienten erhalten wir aber auch, wenn wir die Zahlen in der
Reihenfolge
f0 , . . . , f N −1 , f− N , . . . , f−1
2
(1.55)
2
anordnen (also die linke Hälfte der Folge nach rechts schreiben) und umbenennen in
f0 , . . . , fN −1 .
(1.56)
(Das ist einfach die periodische Fortsetzung der fj für j ≥
N
.)
2
Es gilt nämlich
−1
−1
−1
2πinj
1 NX
1 2X − 2πinj
1 NX
− 2πinj
N
e
fj =
e N fj +
e− N fj−N
N j=0
N j=0
N j= N
N
(1.57)
2
N
2
=
−1
−1
2πin(j+N )
1 X − 2πinj
1 X
e− N fj
e N fj +
N j=0
N j=− N
(1.58)
2
N
2
=
−1
1 X − 2πinj
e N fj
N j=− N
(1.59)
2
= fen .
(1.60)
Wir hätten also die Fourier-Koeffizienten auch definieren können als
fen =
−1
2πinj
1 NX
e− N fj ,
N j=0
n = 0, . . . , N − 1.
(1.61)
12
KAPITEL 1. FOURIER-TRANSFORMATION
Wenn man, wie angedeutet, hier n von 0 bis N − 1 laufen läßt, erhält man nach Abschnitt 1.2.1
automatisch die ursprünglichen Fourier-Koeffizienten in der Reihenfolge
fe0 , . . . , feN −1 , fe− N , . . . , fe−1 ,
2
(1.62)
2
die aber jetzt mit
fe0 , . . . , feN −1
(1.63)
bezeichnet werden. Ähnlich wie vorhin kann man nun zeigen, daß die Formel für die Rücktransformation
N
−1
X
fj =
e
2πinj
N
fen ,
j = 0, . . . , N − 1
(1.64)
n=0
ist.
Die Transformationsformeln Gl. (1.61) und (1.64) sind vollkommen äquivalent zu Gl. (1.1)
und (1.2) und liefern, bis auf die Anordnung, auch genau dieselben Werte. Sie sind aber für das
Programmieren bequemer, weil die Indizes j und n von 0 bis N − 1 laufen, und werden deshalb
gern bei der Diskussion von Algorithmen verwendet.
1.6.2
Rekursionsformel
Die der FFT zugrunde liegende Idee läßt sich am einfachsten rekursiv erklären. Jede halbwegs
effiziente Implementation sollte aber den umgekehrten Weg, von unten nach oben“, gehen
”
(s. Abschnitt 1.6.4).
Es sei
fbn =
N
−1
X
e−
2πinj
N
fj ,
(1.65)
j=0
d.h. die fbn sind bis auf den Vorfaktor
Einheitswurzel
1
N
identisch mit den fen . Außerdem sei ωN die N -te
ωN = e− N .
2πi
(1.66)
Wir zerlegen die Summe in Gl. (1.65) in die Beiträge der Terme mit geradem (j = 2j 0 ) bzw.
ungeradem (j = 2j 0 + 1) Index
fb
n
N
2
=
−1
X
2πin(2j 0 )
−
N
e
N
2
f2j 0 +
j 0 =0
N
2
=
−1
X
j 0 =0
−1
X
e−
2πin(2j 0 +1)
N
f2j 0 +1
(1.67)
j 0 =0
− 2πinj
N/2
e
0
f
2j 0
+e
− 2πin
N
N
2
−1
X
j 0 =0
e−
2πinj 0
N/2
f2j 0 +1 ,
(1.68)
1.6. DIE SCHNELLE FOURIER-TRANSFORMATION (FFT)
13
also (mit j 0 →j)
fbn =
N
2
−1
X
e
− 2πinj
N/2
N
2
f2j +
−1
X
n
ωN
j=0
e−
2πinj
N/2
f2j+1 .
(1.69)
j=0
Das ist die gewünschte Rekursionsformel.
Die erste Summe in Gl. (1.69) sieht—bis auf einen Faktor N2 —aus wie die DFT der N2 Zahlen
f0 , f2 , . . . , fN −2 , die zweite wie die DFT der Zahlen f1 , f3 , . . . , fN −1 . Wir haben also offenbar
eine DFT von N Zahlen auf zwei DFTs mit je N2 Zahlen zurückgeführt, die aus den Punkten
mit geradem bzw. ungeradem Index bestehen. Das stimmt noch nicht ganz, denn der FourierIndex n darf alle Werte von 0 bis N − 1 durchlaufen, während die DFTs auf der rechten Seite
von Gl. (1.69) zunächst nur für die Indizes 0, . . . , N2 − 1 erklärt sind. Hier können wir allerdings
benützen, daß eine DFT von N2 Zahlen periodisch mit Periode N2 ist, und für n ≥ N2 einfach
die Fourier-Koeffizienten mit dem Index n − N2 verwenden.
Außerdem gilt für N2 ≤ n ≤ N − 1
N
n− N
2
n
ωN
= ωN2 ωN
n− N
2
= −ωN
,
(1.70)
N/2
da ωN = −1. D.h. daß man für n ≥ N2 in Gl. (1.69) einfach die entsprechenden Ausdrücke für
n − N2 einsetzt und die zweite Summe von der ersten subtrahiert statt addiert.
Damit ist das Problem der Berechnung einer DFT vom Umfang N vollständig auf FourierTransformierte vom Umfang N2 zurückgeführt. Falls N auch durch 4 teilbar ist, kann man
die Rekursion neuerlich anwenden und die beiden DFTs vom Umfang N2 auf je zwei FourierTransformierte vom Umfang N4 zurückführen usw. In dem praktisch allein wichtigen Spezialfall,
daß N eine reine Potenz von 2 ist, also N = 2m , läßt sich somit eine DFT von N Zahlen in
genau m = log2 N Schritten auf N Fourier-Transformierte vom Umfang 1 reduzieren. Damit
kommt die Rekursion zu einem trivialen Ende, denn die Fourier-Transformierte einer einzelnen
Zahl f0 ist, wie aus Gl. (1.1) für N = 1 unmittelbar folgt, die Zahl selbst
fe0 = f0 ,
falls N = 1.
(1.71)
Falls N keine reine Zweierpotenz ist, kann man eine Primfaktorenzerlegung von N durchführen und zu Gl. (1.69) analoge Rekursionen verwenden, die Zerlegungen in drei und mehr
Teilsummen entsprechen. Sofern aber N frei wählbar ist, beschränkt man sich in der Praxis in
der Regel auf den Fall N = 2m .
1.6.3
Beschleunigung gegenüber DFT
Numerische Fourier-Transformationen sind häufig Bestandteil iterativer Verfahren oder werden
in identischer Weise auf eine große Anzahl von Datensätzen angewendet. Daher beschränkt man
sich bei der Abschätzung des Rechenzeitaufwandes auf die eigentlichen Transformationsformeln
n
, da diese in
und vernachlässigt die Berechnung von Hilfsgrößen, wie z.B. der Phasenfaktoren ωN
einer Tabelle gespeichert werden können und bei wiederholter Ausführung der Transformation
14
KAPITEL 1. FOURIER-TRANSFORMATION
nur aus dem Speicher ausgelesen werden müssen. Außerdem werden meist nur Floating Point
(Gleitkomma) Operationen betrachtet, die den Hauptteil der Rechenzeit ausmachen, Speicherzugriffe und Indexberechnungen aber ignoriert.
Damit berechnet sich der Aufwand für eine gewöhnliche (langsame) DFT folgendermaßen:
Laut Gl. (1.1) müssen, wenn ein Datensatz vom Umfang N gegeben ist, N Fourier-Koeffizienten
berechnet werden, die jeweils aus einer Summe von N komplexen Termen bestehen. Also ist
der Rechenaufwand jedenfalls proportional zu N 2 . Zur Berechnung jedes Summanden ist eine
komplexe Multiplikation notwendig und, um den Term zur Summe zu addieren, eine komplexe
Addition. Eine komplexe Addition entspricht zwei reellen Additionen, eine komplexe Multiplikation vier reellen Multiplikationen und zwei reellen Additionen. Nimmt man der Einfachheit
halber an, daß Additionen und Multiplikationen gleich lang dauern, dann sind das acht Floating
Point Operationen pro Summand. Das ergibt für eine DFT also insgesamt
ZDFT = 8N 2
(1.72)
Operationen.
Im Fall einer FFT vom Umfang N = 2m muß laut Gl. (1.69) im ersten Rekursionsschritt
für jedes 0 ≤ n ≤ N2 − 1 ein Fourier-Koeffizient der Datenpunkte mit ungeradem Index
n
mit ωN
multipliziert und zum entsprechenden Fourier-Koeffizienten der Punkte mit geradem
Index addiert werden. Das sind N2 komplexe Additionen und Multiplikationen. Für N2 ≤ n ≤
N − 1 müssen nur die gerade gebildeten Produkte von den Fourier-Koeffizienten der Punkte mit
geradem Index subtrahiert werden, was weiteren N2 komplexen Additionen entspricht. Rechnet
man wieder komplexe in reelle Operationen um, so ergeben sich für den ersten Rekursionsschritt
insgesamt 5N reelle Operationen. Im zweiten Rekursionsschritt, der Reduktion von 2 DFTs von
je N2 Datenpunkten in 4 DFTs vom Umfang N4 , sind demnach 2 × 5 N2 Operationen notwendig,
im dritten 4 × 5 N4 ,. . . , d.h. immer 5N . Da genau m = log2 N Rekursionsschritte erforderlich
sind, kostet also eine FFT von N Datenpunkten insgesamt
ZFFT = 5N log2 N
(1.73)
Floating Point Operationen.
Die Beschleunigung, die mit der FFT gegenüber einer konventionellen DFT erreicht werden
kann, ist demnach
S=
ZDFT
8N
=
.
ZFFT
5 log2 N
(1.74)
Tabelle 1.1 zeigt einige typische Werte.
m
N
ZDFT
ZFFT
5
10
15
20
32
1024
32768
1048576
10
160
3495
83886
Tabelle 1.1: Beschleunigung durch FFT gegenüber DFT.
1.6. DIE SCHNELLE FOURIER-TRANSFORMATION (FFT)
15
Es ist offensichtlich, daß bei allen Problemen, bei denen eine numerische Fourier-Transformation
der zeitbestimmende Faktor ist, mit der FFT gewaltige Leistungssteigerungen erreicht werden
können.
1.6.4
Implementation
Wie schon erwähnt, wäre eine rekursive Implementation der FFT wegen des zusätzlichen Speicher- und Verwaltungsaufwandes in der Praxis sehr ineffizient. Wir können jedoch die Rekursionsgleichung (1.69) benützen, um ein Daten-Flußdiagramm zu konstruieren, aus dem sich
unmittelbar ablesen läßt, wie die FFT programmiert werden kann. Diese Implementation hat
außerdem den Vorzug, daß sie in place“ arbeitet, also die Transformierte die Originaldaten
”
überschreibt und somit kein zusätzlicher Speicherplatz benötigt wird. Das ist vor allem bei
großen Datenmengen oder mehrdimensionalen FFTs ein Vorteil. Daneben gibt es aber auch
noch eine Reihe von anderen (und effizienteren) Verfahren, insbesondere solche, die spezielle
Datenstrukturen berücksichtigen, wie z.B. die kompakte Speicherung einer FFT rein reeller
Werte.
Wir illustrieren die Vorgangsweise am Beispiel N = 23 = 8. Eine graphische Darstellung
von Gl. (1.69) sieht dann folgendermaßen aus:
ω3 7
7
−
ω2 5
6
−
ω1 3
5
−
ω0 1
4
−
3
+
2
+
1
+
0
+
6
4
2
0
Abbildung 1.3: Erster Rekursionsschritt bei einer 8-Punkt FFT.
Dabei ist ω ≡ ω8 = e−2πi/8 . Die linke Spalte von Kästchen mit der Beschriftung 0, . . . , 7
symbolisiert die Speicherzellen, in denen das gewünschte Endresultat steht, nämlich (bis auf
den Vorfaktor N1 ) die Fourier-Koeffizienten der Werte f0 , f1 , . . . , f7 , also fb0 , fb1 , . . . , fb7 . In der
unteren Hälfte der rechten Spalte stehen die Fourier-Koeffizienten der Werte f0 , f2 , f4 , f6 , in
16
KAPITEL 1. FOURIER-TRANSFORMATION
der oberen Hälfte die der Werte f1 , f3 , f5 , f7 . (Als Fourier-Koeffzienten zweier DFTs von nur
vier Punkten sollten sie eigentlich jeweils mit 0, 1, 2, 3 durchnumeriert werden, wir wollen hier
aber deutlich machen, welcher Teilmenge der Ausgangswerte sie entsprechen.) Laut Gl. (1.69)
erhalten wir für n = 0, 1, 2, 3 die n-te Komponente der 8-Punkt DFT der Werte f0 , . . . , f7 ,
indem wir die n-te Komponente der 4-Punkt DFT der Werte f1 , f3 , f5 , f7 mit ω8n multiplizieren
und zur n-ten Komponente der 4-Punkt DFT der Werte f0 , f2 , f4 , f6 addieren. Für n = 4, 5, 6, 7
müssen wir statt addieren nur subtrahieren und das Ergebnis an der entsprechenden Stelle
der oberen Hälfte der linken Spalte eintragen. Die Zahlen ω80 , . . . , ω83 sind in einem Hilfsfeld
gespeichert.
Analog können wir nun z.B. die 4-Punkt DFT der Ausgangswerte f0 , f2 , f4 , f6 auf die 2Punkt DFTs der Wertepaare f0 , f4 und f2 , f6 zurückführen. Die dabei auftretenden Faktoren
ω40 und ω41 sind nichts anderes als ω80 und ω82 von vorhin. Nun kann nochmals z.B. die 2-Punkt
DFT der Ausgangswerte f0 , f4 auf die 1-Punkt DFTs der Werte f0 und f4 reduziert werden,
wobei ein trivialer Faktor ω20 = ω80 = 1 auftritt. Die 1-Punkt DFT jedes Ausgangswertes ist der
Wert selbst.
Schreibt man alle Rekursionen für den Fall N = 8 explizit aus, so ergibt sich folgendes Bild:
7
−
ω3 7 −
ω2 7 −
ω0 7
6
−
ω2 5 −
ω0 3 +
3
5
−
ω1 3 +
5
−
ω0 5
4
−
ω0 1 +
1
+
1
3
+
6
−
ω2 6 −
ω0 6
2
+
4
−
ω0 2 +
2
1
+
2
+
4
−
ω0 4
0
+
0
+
0
+
0
Abbildung 1.4: Datenfluß bei einer 8-Punkt FFT.
Von rechts nach links gelesen, zeigt dieses Daten-Flußdiagramm, wie man die FFT nichtrekursiv
implementieren kann. Man beginnt mit einer permutierten Anordnung der acht 1-Punkt DFTs
(d.h. der Ausgangswerte), wie in der vierten Spalte ganz rechts angegeben. Durch Addition
bzw. Subtraktion von je zwei Werten (die Multiplikation mit ω20 = ω80 = 1 kann entfallen)
erhält man die vier 2-Punkt DFTs in der dritten Spalte. Nun wird jede zweite Zweiergruppe
mit den Potenzen von ω4 = ω82 multipliziert und zur darunter stehenden Zweiergruppe addiert
bzw. von ihr subtrahiert. Von den dabei entstehenden 4-Punkt DFTs in der zweiten Spalte wird
wieder die obere mit ω80 , . . . , ω83 multipliziert; Addition bzw. Subtraktion dieser Vierergruppen
1.6. DIE SCHNELLE FOURIER-TRANSFORMATION (FFT)
17
ergibt die gewünschte 8-Punkt DFT, die zum Abschluß nur noch mit N1 multipliziert werden
muß. (Bei einer inversen FFT entfällt diese Multiplikation.)
Da der Grundschritt der FFT jeweils darin besteht, ein Wertepaar durch eine Linearkombination der es bildenden Zahlen zu ersetzen, womit das Wertepaar sofort überschrieben werden
n
kann, ist auch klar, daß außer den ωN
keine Hilfsfelder benötigt werden: Die vier Spalten von
Abb. 1.4 sind in diesem Fall einfach als Belegung ein- und desselben Speicherplatzes zu vier
verschiedenen Zeitpunkten zu interpretieren. Zu Beginn der FFT ist dort eine Permutation der
Originalwerte gespeichert, am Ende die fertige DFT.
Um die zu Beginn notwendige Permutation der Ausgangswerte zu charakterisieren, betrachten wir die Binärdarstellung der Indizes von Abb. 1.4.
1. Spalte
2. Spalte
dezimal binär
7
111
111
6
110
101
5
101
011
4
100
001
3
011
110
2
010
100
1
001
010
0
000
000
3. Spalte
111
011
101
001
110
010
100
000
4. Spalte
binär dezimal
111
7
011
3
101
5
001
1
110
6
010
2
100
4
000
0
Tabelle 1.2: Binäre Indexvektoren bei einer 8-Punkt FFT.
In der ersten Spalte stehen hier die Indizes 0, . . . , 7 in der natürlichen Anordnung (von unten
nach oben), d.h. daß in der Binärdarstellung das rechte Bit schneller variiert als das mittlere
und dieses schneller als das linke. Beim Übergang von der ersten zur zweiten Spalte wandern alle
Indizes, die das rechte Bit gesetzt haben, in die obere Hälfte, beim Übergang von der zweiten in
die dritte Spalte innerhalb jeder Vierergruppe jene Indizes, die das mittlere Bit gesetzt haben.
Damit ist in der dritten und vierten Spalte erreicht, daß am schnellsten das linke Bit variiert,
dann das mittlere und am langsamsten das rechte. Die entstehende Anordnung zeichnet sich
also dadurch aus, daß in der Binärdarstellung das Bitmuster jedes Index gerade das Spiegelbild
des Bitmusters in der natürlichen Anordnung ist ( Bitspiegelung“).
”
Da die Programmierung der Bitspiegelung ebenfalls relativ aufwendig ist, wird man, wie
n
, den Permutationsvektor möglichst nur einmal berechnen und
im Fall der Phasenfaktoren ωN
dann wiederverwerten. Computer bzw. Prozessoren, die auf FFT spezialisiert sind, haben üblicherweise für die Bitspiegelung eine eigene Hardware-Instruktion zur Verfügung.
18
KAPITEL 1. FOURIER-TRANSFORMATION
Herunterladen