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