Die Schnelle Fouriertransformation Literatur Motivation Potenzreihen

Transcrição

Die Schnelle Fouriertransformation Literatur Motivation Potenzreihen
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Literatur
1 “An Algorithm for the Machine Calculation of Complex Fourier
Series”, Cooley, Tukey (1965) (erste Beschreibung der FFT)
Die Schnelle Fouriertransformation
2 “Fast Fourier Transforms: A Tutorial Review and a State of the
Art”, Duhamel, Vetterli (1990)
3 “Introduction to Algorithms”, Cormen et. al (Darstellung der
grundlegenden FFT Algorithmen)
Andreas M. Chwatal
Arbeitsbereich für Algorithmen und Datenstrukturen
Institut für Computergraphik und Algorithmen
4 “Algorithms”, Sedgewick (Kompakte Darstellung der FFT)
VU Fortgeschrittene Algorithmen und Datenstrukturen
Juni 2008
6 “The Fourier Transform & it’s Applications”, Bracewell
5 “Numerical Recipes in C, 2nd Edition”
7 “Fast Fourier Transform and Convolution Algorithms”, Nussbaumer
(1982) (detaillierte Beschreibung verschiedener FFT-Algorithmen)
8 “Mathematische Methoden in der Physik”, Lang, Pucker (Einfache
Darstellung der zugrundeliegenden Mathematik)
Die Schnelle Fouriertransformation
Einführung
Polynome
1
Komplexe Zahlen
FFT
Anwendungen
Die Schnelle Fouriertransformation
Einführung
Motivation
Polynome
2
Komplexe Zahlen
FFT
Anwendungen
Potenzreihen
Potenzreihen
∞
X
Suchen:
Effiziente Methode zur Multiplikation von Polynomen (trivialer
Ansatz: Θ(n2 ))
aj (x − x0 )j
j=0
Man kann Polynomfunktionen als Potenzreihen auffassen, wobei nur
endlich viele Koeffizienten aj 6= 0:
Effiziente Implementierung der Diskreten Fouriertransformation
(DFT: Θ(n2 ))
Beides kann mittels Fast Fourier Transform (FFT) in Θ(n log n) gelöst
werden!
A(x) =
n−1
X
aj (x − x0 )j
j=0
Funktionen können oft durch Potenzreihen (z.B. Taylorreihen) in
bestimmten Bereichen approximiert werden.
Die Schnelle Fouriertransformation
3
Die Schnelle Fouriertransformation
4
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Fourierreihe
Polynome
Fourieranalyse
FFT
Anwendungen
Man kann Winkelfunktionen durch Exponentialfunktionen mit imaginären
Argumenten ausdrücken:
sin (nx) =
Quelle: [8]
geg.: periodische Fkt. f (t) mit Periode T ; Grundfrequenz ω =
ges.: Koeffizienten der zugrundeliegenden Frequenzanteile
f (t) =
2π
T
es gilt: cn =
a0 X
+
(an · cos nωt + bn · sin nωt)
2
Die Schnelle Fouriertransformation
5
Komplexe Zahlen
FFT
Anwendungen
cn =
an −ibn
2
1
T
Z
c+T
c
(n > 0), cn =
dt f (t)e −inωt
a−n +ibn
2
(n < 0)
Die Schnelle Fouriertransformation
Einführung
Fouriertransformation
6
Polynome
Komplexe Zahlen
FFT
Anwendungen
Diskrete Fouriertransformation (DFT)
FT:
Weitere Verallgemeinerung: Statt Funktionen mit Periode T betrachten wir
nicht periodische Funktionen (T → ∞)
Fouriertransformation
cn e inωt
Transformation vom t-Raum in den Raum der diskreten Indizes n.
n=1
Polynome
∞
X
n=−∞
∞
f (t) =
− e −inx ), cos (nx) = 12 (e inx + e −inx ) =⇒
1
inx
2i (e
Komplexe Fourierreihe
Approximation periodischer Funktionen → Fourierreihe
Einführung
Komplexe Zahlen
komplexe Fourierreihe
F (ω) =
Z ∞
1
dt f (t)e −iωt
2π ∞
Z ∞
1
f (t) =
dω F (ω)e iωt
2π −∞
1
2π
Z
∞
∞
dt f (t)e −iωt
Unter bestimmten Vorraussetzungen kann der folgende Ausdruck als
Diskretisierung der Fourier Transformation betrachtet werden.
F (ω) =
Fk =
n−1
1 X −iωk t
ft e
2π
mit
t=0
Man erhält ein kontinuierliches
Frequenzspektum.
ωk =
2πk
n
Def.: DFT
Bsp: t ↔ ω,
Ortsraum ↔ Impulsraum
Fk =
n−1
X
ft e iωk t
t=0
Die Schnelle Fouriertransformation
7
Die Schnelle Fouriertransformation
8
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Polynome
Wenn ft ∈ R, dann gilt:
Polynom
∗
Fk = Fn−k
Der Stern steht für komplexe Konjugation.
A(x) =
|Fk | =
q
<(Fk )2 + =(Fk )2
Phase gegeben durch
atan(
Aufwand Θ(n)
=(Fk )
)
<(Fk )
Addition C (x) = A(x) + B(x) mit cj = aj + bj
Aufwand Θ(n)
P
Multiplikation C (x) = A(x) · B(x) mit cj = jk=0 ak bj−k
(entspricht Faltung: c = a ⊗ b !!) Aufwand Θ(n2 )
9
Komplexe Zahlen
FFT
Anwendungen
Polynome
10
Komplexe Zahlen
FFT
Anwendungen
Interpolation
Effizientere Multiplikation möglich? Ja!! (Θ(n log n))
Für jede Menge {(x0 , y0 ), . . . , (xn−1 , yn−1 )} von n Stützstellen existiert ein
Pn−1
eindeutiges Polynom A(x) = j=0 aj x j mit yk = A(xk ).
Stützstellendarstellung
{(x0 , y0 ) , (x1 , y1 ) , . . . , (xn−1 , yn−1 )}
Die Schnelle Fouriertransformation
Einführung
Stützstellendarstellung
mit
yk = A(xk )
Beweis (Skizze)
Ein Polynom mit Gradschranke n ist durch n Punkt-Wert-Paare an beliebigen
(jeweils verschiedenen) Stellen xk eindeutig bestimmt!

1

1

1
1
|
Multiplikation in der Stützstellendarstellung
A(x) : {(x0 , y0 ) , (x1 , y1 ) , . . . , (x2n−1 , y2n−1 )}
0
B(x) : {(x0 , y00 ) , (x1 , y10 ) , . . . , x2n−1 , y2n−1
}
0
C (x) : {(x0 , y0 y00 ) , (x1 , y1 y10 ) , . . . , x2n−1 , y2n−1 y2n−1
}
Multiplikation zweier Polynome mit Gradschranke n ergibt ein Polynom mit
Gradschranke 2n − 1
Wahl von mind. 2n − 1 Punkten xk für Stützstellendarstellung
Für unsere Zwecke: Verwendung von 2n Punkten vorteilhaft
Die Schnelle Fouriertransformation
(Gradschranke n)
Auswertung A(x)|x0
Hornerschema:
A(x0 ) = a0 + x0 (a1 + x0 (a2 + . . . + x0 (an−2 + x0 (an−1 )))
Die Schnelle Fouriertransformation
Polynome
aj x j
j=0
Amplitude gegeben durch
Einführung
n−1
X
11
 



x0n−1
a0
y0


 y1 
x1n−1 
  a1 


..  ·  ..  =  .. 
 . 
.   . 
n−1
2
an−1
yn−1
xn−1 xn−1
. . . xn−1
{z
}
Vandermonde Matrix V
Q
det(V ) = j<k (xk − xj )
⇒ Matrix invertierbar wenn xk 6= xj
⇒ a = V −1 y
x0
x1
..
.
x02
x12
..
.
...
...
..
.
Aufwand (mittels LU Zerlegung): Θ(n3 )
besser: Lagrange-Formel: Θ(n2 )
Die Schnelle Fouriertransformation
12
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Transformation Koeffizienten - Stützstellen Darstellung
Polynome
Komplexe Zahlen
a0 , a1 , . . . , an−1
b0 , b1 , . . . , bn−1
Θ(n2 )
1
Koeffizientendarstellung → Stützstellendarstellung:
2
Stützstellendarstellung → Koeffizientendarstellung: Θ(n2 )
3
Durch FFT sind (1) und (2) in Θ(n log n) durchführbar!
FFT
Anwendungen
Algorithmus zur Multiplikation von Polynomen
Gewöhnliche Multiplikation
Θ(n2 )
c0 , c1 , . . . , c2n−2
Auswertung
Θ(n lg n)
Interpolation
Θ(n lg n)
0
C(ω2n
)
0
0
A(ω2n
), B(ω2n
)
1
C(ω2n
)
1
1
A(ω2n
), B(ω2n
)
..
.
punktweise Multiplikation
Θ(n)
2n−1
2n−1
A(ω2n
), B(ω2n
)
..
.
2n−1
C(ω2n
)
Auswertung und Interpolation mittels FFT bei Verwendung von komplexen
Einheitswurzeln ω in Θ(n lg n) möglich.
Die Schnelle Fouriertransformation
Einführung
13
Polynome
Komplexe Zahlen
FFT
Anwendungen
Die Schnelle Fouriertransformation
Einführung
Komplexe Wurzeln
14
Polynome
Komplexe Zahlen
FFT
Anwendungen
Eigenschaften (1)
Def.: Komplexe Einheitswurzel ω
ω n = 1,
Kürzungs-Lemma
ω∈C
dk = ω k .
Für alle n, k ≥ 0, d > 0, n, k, d ∈ N: ωdn
n
Es gibt genau n Lösungen: ωnk = e 2πik/n , k = 0, 1, . . . , n − 1
Lösungen liegen auf Kreis um Ursprung (e iϕ = cos ϕ + i sin ϕ).
i
ω83
ω82
ω84
Korollar
ω81
n/2
Für alle geraden n > 0 gilt: ωn
ω80 = ω88
-1
1
ω85
-i ω86
Bsp.:
√
Sei n > 0, dann gilt: Die Quadrate der n komplexen n-ten
Einheiltswurzeln entsprechen den n/2 komplexen (n/2)-ten
Einheiltswurzeln.
ω87
Figure: Darstellung von
ω8 .
Figure: Darstellung der Einheitswurzel
für verschiedene n.
1 = x, x = {1, −1};
Die Schnelle Fouriertransformation
= ω2 = −1.
Halbierungs-Lemma
√
4
1 = x, x = {1, i, −1, −i}
15
Die Schnelle Fouriertransformation
16
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Eigenschaften (2)
Polynome
Komplexe Zahlen
FFT
Anwendungen
Diskrete Fourier Transformation
Summations Lemma
Für alle n ≥ 1 ∈ Z und k ∈ Z+ und n kein ganzzahliger Teiler von k gilt:
n−1 X
ωnk
j
I Interpolation der Stützstellendarstellung eines Polynomes entspricht der
inversen Transformation.
=0
j=0
Bew:
n−1 X
ωnk
j
=
j=0
I Berechnung eines Polynoms A(x) an den Stellen ωn0 , . . . , ωnn−1
entspricht genau der diskreten Fourier Transformation.
Def.:
n
ωnk − 1
(ω n )k − 1
(1)k − 1
= nk
= k
=0
ωnk − 1
ωn − 1
ωn − 1
DFT :
DFT−1 :
17
Komplexe Zahlen
FFT
Anwendungen



DFT: 



 

1
1
1
1
a0
1·(n−1) 
 

1
ωn1·1
ωn1·2
...
ωn
 
 
 a1 


2·(n−1)
 1
 ·
a2 
ωn2·1
ωn2·2
...
ωn
=

 
 
 .. 
.
.
.

.
..
..
..
..
 1
  . 
1·(n−1)
2·(n−1)
(n−1)·(n−1)
yn−1
a
n−1
1 ωn
ωn
. . . ωn
{z
}
|
y0
y1
y2
..
.

Fouriermatrix
DFT−1 :
a = F −1 y
Theorem: (Fn−1 )jk = ωn−kj /n
Pn−1
Pn−1 k(j 0 −j)
0
Beweis: (Fn−1 Fn )jj 0 = k=0 (ωn−kj /n)(ωnkj ) = k=0 ωn
/n = δjj 0
Die letzte Umformung erfolgt mithilfe des Summationslemmas.
n−1
X
aj e i
2πk
j
n
j=0
n−1
aj =
1X
yk (ωn−k )j
n
Die Schnelle Fouriertransformation
Einführung
Diskrete Fourier Transformation (2)

aj (ωnk )j =
k=0
ωnj ωnk = ωnj+k = ωn(j+k)modn
Die Schnelle Fouriertransformation
Polynome
n−1
X
j=0
Bem: Die n komplexen Einheitswurzeln bilden Gruppe bzgl. der Multiplikation,
mit derselben Struktur wie die additive Gruppe (Zn , +):
Einführung
yk =
Polynome
18
Komplexe Zahlen
FFT
Anwendungen
Faltung
Faltungstheorem
DFT:
a ⊗ b = DFT−1
2n (DFT2n (a) · DFT2n (b))
FT:
(f ⊗ g )(t) = F (ω) · G (ω)
Bem: Faltung im “Zeitbereich” ist äquivalent zu punktweiser
Multiplikation im “Frequenzbereich”. Somit liefert das Faltungstheorem
eine Begründung für das Polynom-Multiplikationsschema.
⇒ Berechnung von DFT−1 mittels DFT-Algorithmus, wobei ωn−k statt ωnk
verwendet wird, und das Ergebnis durch n dividiert wird.
Die Schnelle Fouriertransformation
19
Die Schnelle Fouriertransformation
20
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Schnelle Fouriertransformation (1)
Polynome
Komplexe Zahlen
FFT
FFT ermöglicht Berechnung der DFT in Θ(n lg n).
Cooley und Tukey: “An
Algorithm for the Machine
Calculation of Complex
Fourier Series”, (1965)
Divide and Conquer Strategie durch Aufteilen und rekursive Berechnung der
Polynome (Danielson-Lanczos Lemma)
auch schon Variante von
Good 1958 (PFA)
d.h.
A(x) = A[0] (x 2 ) + xA[1] (x 2 )
mit
A[0] (x) = a0 + a2 x + a4 x 2 + . . . + an−2 x n/2−1
A[1] (x)
Ähnliches Verfahren auch
schon 1805 von C.F. Gauss
zur Berechnung der
Bahntrajektorien der
Asteroiden Pallas und Juno
verwendet
= a1 + a3 x + a5 x 2 + . . . + an−1 x n/2−1
⇒ o.B.d.A Inputlänge n = 2l ! (geg. mit Koeff. gleich 0 auffüllen)
Das Problem A(x) an den Stellen ωn0 , ωn1 , . . . , ωnn−1 auszuwerten wird auf
das Problem A[0] und A[1] an den Stellen (ωn0 )2 , (ωn1 )2 , . . . , (ωnn−1 )2
auszuwerten reduziert.
Aufgrund des Halbierungs-Lemmas gilt:
n/2−1
0
1
(ωn0 )2 , (ωn1 )2 , . . . , (ωnn−1 )2 = ωn/2
, ωn/2
, . . . , ωn/2
Die Schnelle Fouriertransformation
Einführung
21
Polynome
Komplexe Zahlen
FFT
Anwendungen
5
6
7
8
9
10
11
12
13
n ← length[a];
if n = 1 then return a;
ωn ← e 2πi/n ;
ω ← 1;
a[0] ← (a0 , a2 , . . . , an−2 );
a[1] ← (a1 , a3 , . . . , an−1 );
y [0] ← FFT(a[0] ) ;
y [1] ← FFT(a[1] ) ;
for k ← 0 to n/2 − 1 do
[0]
[1]
yk ← yk + ωyk ;
[0]
[1]
yk+(n/2) ← yk − ωyk ;
ω ← ωωn ;
Polynome
Komplexe Zahlen
FFT
Anwendungen
Fall 1: (k < n/2)
yk
Bemerkungen
= A[0] (ωn2k ) + ωnk A[1] (ωn2k )
[0]
[1]
Fall 2: (k < n/2)
Zeilen 7,8: Berechnung von
FFTn/2 mittels
Kürzungs-Lemma:
[0]
k ) = A[0] (ω 2k )
yk = A[0] (ωn/2
n
[1]
yk
= A(ωnk )
= yk + ωnk yk
Rekursion endet bei
y0 = a0 ω10 = a0 .
yk+(n/2)
= A(ωnk+(n/2) )
= A[0] (ωn2k+n ) + ωnk+(n/2) A[1] (ωn2k+n )
= A[0] (ωn2k ) + ωnk+(n/2) A[1] (ωn2k )
[0]
[1]
= yk + ωnk+(n/2) yk
k ) = A[1] (ω 2k )
= A[1] (ωn/2
n
[0]
[1]
= yk − ωnk yk
Zeilen 10-12: nächste Folie.
Laufzeit von Recursive-FFT
return y;
Die Schnelle Fouriertransformation
22
Algorithmus (2)
Function RECURSIVE-FFT(a)
3
4
n/2−1
0
1
, ωn/2
, ωn/2
, . . . , ωn/2
Die Schnelle Fouriertransformation
Einführung
Algorithmus (1)
1
2
Anwendungen
Schnelle Fouriertransformation (2)
T (n) = 2T (n/2) + Θ(n) = Θ(n lg n)
23
Die Schnelle Fouriertransformation
24
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Effiziente FFT-Implementierungen (1)
Beseitigung der Rekursion
wünschenswert.
Reihenfolge der Koeffizienten am
Rekursionsende muss erhalten
werden
weitere Levels: streiche LSB, teile
gemäß neuem LSB auf
⇒ Reihenfolge im untersten Level
ergibt sich durch Bit-Umkehrung
der Indizes!
(a0 , a2 , a4 , a6 )
(a1 , a3 , a5 , a7 )
(a0 , a4 ) (a2 , a6 ) (a1 , a5 ) (a3 , a7 )
(a0 ) (a4 ) (a2 ) (a6 ) (a1 ) (a5 ) (a3 ) (a7 )
Polynome
25
Komplexe Zahlen
Function ITERATIVE-FFT(a) v1
1
4
5
6
7
8
9
10
11
12
FFT
Anwendungen
2
3
4
for s ← 1 to lg n do
for k ← 0 to n − 1 by 2s do
kombiniere die beiden 2s−1 -elementigen DFTs in
A[k..k + 2s−1 − 1] und A[k + 2s−1 ..k + 2s − 1]
zu einer 2s -elementigen DFT in A[k..k + 2s − 1]
Die Schnelle Fouriertransformation
Einführung
26
Polynome
Komplexe Zahlen
FFT
Anwendungen
Paralleler FFT-Schaltkreis
y0
a0
Function ITERATIVE-FFT(a) v2
n ← length[a] ;
1 n ← length[a] ;
for s ← to lg n do
2 for s ← to lg n do
m ← 2s ;
3
m ← 2s ;
2πi/m
ωm ← e
;
4
ωm ← e 2πi/m ;
for k ← 0 to n − 1 by m do
5
ω←1;
ω←1;
6
for j ← 0 to m/2 − 1 do
for j ← 0 to m/2 − 1 do
7
for k ← j to n − 1 by m do
t ← ωA[k + j + m/2];
8
y ← ωA[k + m/2];
u ← A[k + j] ;
9
u ← A[k] ;
A[k + j] ← u + t ;
10
A[k] ← u + t ;
A[k + j + m/2] ← u − t ; 11
A[k + m/2] ← u − t ;
ω ← ωωm ;
12
ω ← ωωm ;
a1
ω20
y1
ω40
a2
a3
ω20
y2
ω41
y3
ω80
a4
a5
ω20
a7
ω40
Die Schnelle Fouriertransformation
y5
ω82
ω20
y6
ω83
s=1
27
y4
ω81
a6
Bem.: Einfachere Indexberechnung in v2 durch Vertauschen der
Schleifen.
Die Schnelle Fouriertransformation
Anwendungen
Algorithm 2: Struktur eines iterativen Algorithmus
1
5
Effiziente FFT-Implementierungen (3)
2
3
FFT
Rekursive Aufrufe der FFT
Die Schnelle Fouriertransformation
Einführung
Komplexe Zahlen
Damit kann man einen iterativen Algorithmus folgender Struktur
erstellen:
(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 )
Beobachtung: im 1. Level werden
Koeffizienten gemäß des LSB ihres
Index in linken und rechten
Teilbaum aufgeteilt.
Polynome
Effiziente FFT-Implementierungen (2)
s=2
y7
s=3
28
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Bemerkungen
Polynome
Komplexe Zahlen
FFT
Anwendungen
Bemerkungen (Forts.)
Umsetzung der FFT als Schaltkreis
Rader-Brenner FFT: Durch Modifikation von Radix-2 FFT werden
komplexe Multiplikationen durch rein reelle, bzw. rein imaginäre
Multiplikationen ersetzt.
bisherige Algorithmen: Radix-2 FFT
besser: Radix-4 FFT
Sequenz wird in jedem Schritt in 4 Subprobleme geteilt
P3
yk = l=0 ωnlk A[l] (ωnk )4
Bruun-Algorithmus für reelle Eingabedaten: fast ausschließlich reelle
Operationen, jedoch numerische Nachteile
25% weniger Multiplikationen, in etwa gleich viele Additionen
Good-Thomas Algorithm (Prime Factor Algorithm)
Radix-8 und Radix-16 bringen weitere geringfügige Vorteile
Winograd Fourier Transform
Mixed-Radix Methodes
Die Schnelle Fouriertransformation
Einführung
29
Polynome
Komplexe Zahlen
FFT
Anwendungen
Die Schnelle Fouriertransformation
Einführung
Multidimensionale FFTs
30
Polynome
Komplexe Zahlen
FFT
Anwendungen
Good-Thomas Algorithmus (1)
2-dim. DFT:
yk1 ,k2
=
nX
1 −1 n
2 −1
X
aj1 ,j2 (ωnk11 )j1 (ωnk22 )j2
publiziert 1958; “Inspiration” für Cooley&Tukey’s Radix-n FFT
j1 =0 j2 =0
=
nX
1 −1
nX
2 −1
j1 =0
j2 =0
(ωnk11 )j1
Vorraussetzung:
aj1 ,j2 (ωnk22 )j2
n=
somit kann man n1 DFTs
aj1 ,k2 =
nX
2 −1
Betrachten Spezialfall l = 2:
j2 =0
nX
1 −1
ni mit ggt(n1 , · · · , nl ) = 1
j=0
aj1 ,j2 (ωnk22 )j2
der Länge n2 berechnen, und somit
ak1 ,k2 =
l
Y
Ziel: 1-dim DFT der Grösse n in 2-dim DFTs der Grösse n1 × n2
konvertieren (n1 , n2 relativ prim)
aj1 ,k2 (ωnk11 )j1
j1 =0
Laufzeit: Θ(n log n)
Die Schnelle Fouriertransformation
31
Die Schnelle Fouriertransformation
32
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Good-Thomas Algorithmus (2)
Chinesischer Restsatz:
µ
X
n
ki ti mod n
ni
(1)
i=1
mit
n
ni ti
≡ 1 mod ni und n =
Q
Anwendungen
k = n1 t2 k2 + n2 t1 k1 mod n
(2)
Weglassen von ti ergibt ebenso einen äquivalenten Ausdruck für die linke
Seite (für eine bestimmte Folge von n1 , n2 erhält man jedoch eine andere
Reihenfolge für j)
r = haib sei Abkürzung für r ≡ a mod b.
Geg: hki3 = 2, hki4 = 1, hki5 = 3.
n1 = 3, n2 = 4, n3 = 5; n = 60; nn1 = 20, nn2 = 15, nn3 = 12.
h20t1 i3 = 1, h15t2 i4 = 1, h12t3 i5 = 1 ⇒ t1 = 2, t2 = 3, t3 = 3.
k ≡ 20 · 2 · 2 + 15 · 1 · 3 + 12 · 3 · 3 mod 60 = 53.
Die Schnelle Fouriertransformation
j = n1 j2 + n2 j1 mod n
33
Polynome
FFT
2-dim: (j1 , k1 = 0, · · · , n1 − 1; j2 , k2 = 0, · · · , n2 − 1)
i ni
Beispiel
Einführung
Komplexe Zahlen
Mittels (1) kann ein n-dimensionaler Vektor in µ Vektoren gemapped
werden. Der Ausdruck auf der rechten Seite ist dem Ausdruck auf der
linken Seite äquivalent. Somit: Weg einen einzelnen Index als Summe
auszudrücken.
Eine Menge linearer Kongruenzen
k ≡ ki mod ni (i = 1, . . . , µ, ni teilerfremd) hat die eindeutige Lösung:
k≡
Polynome
Good-Thomas Algorithmus (3)
Komplexe Zahlen
FFT
Anwendungen
Die Schnelle Fouriertransformation
Einführung
Good-Thomas Algorithmus (4)
(3)
Polynome
34
Komplexe Zahlen
FFT
Anwendungen
Anwendungen
Mittels (2) und (3) kann man die DFT schreiben als:
yn1 k2 t2 +n2 k1 t1 =
nX
1 −1 n
2 −1
X
an1 j2 +n2 j1 ωn(n1 n1 k2 2 t2 +n2 k1 t1 )(n1 j2 +n2 j1 )
Signalverarbeitung
mod n
Bildverarbeitung
j1 =0 j2 =0
digitale Filter
Exponent von e: (n12 k2 j2 t2 + n1 n2 k1 j2 t1 + n1 n2 k2 j1 t2 +n22 k1 j1 t1 ) mod n
| {z } | {z }
≡0 mod n
Mathematik (Zahlentheorie,
Statistik, Kombinatorik und
Wahrscheinlichkeitstheorie)
≡0 mod n
Im folgenden Ausdruck wird verwendet, dass n1 t2 ≡ 1 mod n2 (bzw. mit
vertauschten Indizes), und dass die Exponenten der Exponentialfunktion jeweils
modulo n2 , bzw. n1 gerechnet werden.
yn1 k2 t2 +n2 k1 t1
=
nX
1 −1 n
2 −1
X
an1 j2 +n2 j1 e
2πi
n2
(n1 t2 k2 j2 )
e
2πi
n1
Physik (Akustik, Optik)
Medizin (MR)
(22 t1 k1 j1 )
Astronomie (Sternschwingungen,
Exoplaneten, SETI)
j1 =0 j2 =0
=
nX
1 −1 n
2 −1
X
an1 j2 +n2 j1 ωnk11 j1 ωnk22 j2
...
⇒ 2-dim DFT.
j1 =0 j2 =0
Die Schnelle Fouriertransformation
35
Die Schnelle Fouriertransformation
36
Einführung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Einführung
Beispiel: Bildverarbeitung
Polynome
Komplexe Zahlen
FFT
Anwendungen
Beispiel: Exoplaneten
Bestimmung der Umlaufzeiten von Planeten bei anderen Sternen
USFFT (Unequally Spaced Fast Fourier Transform)
150
100
RV[m/s]
50
200
0
-50
150
-100
0
2
4
6
8
t[d]
10
12
14
16
100
70
50
40
RV[m/s]
RV[m/s]
60
50
0
30
20
10
0
-10
-50
-20
0
5
10
15
20
25
30
35
40
45
t[d]
-100
100
80
60
40
-2000
-1500
-1000
(a) Orignialbild, (b) Frequenzbild,
(c) gefiltertes Frequenzbild, (d) rücktransformiertes Bild
Die Schnelle Fouriertransformation
-500
0
t[d]
500
1000
1500
2000
2500
RV[m/s]
-150
-2500
20
0
-20
-40
-60
0
37
Die Schnelle Fouriertransformation
1000
2000
3000
t[d]
4000
5000
6000
38