Szybka trasformacja Fouriera (FFT Fast Fourier Trasform) Pla wykładu: 1 Trasformacja Fouriera, iloczy skalary 2 DFT - dyskreta trasformacja Fouriera 3 FFT szybka trasformacja Fouriera a) algorytm PFA b) algorytm Cooleya-Tukeya (radix-2) c) wielowymiarowe FFT 4 Przykłady zastosowań: możeie wielomiaów, odszumiaie sygału, rozwiązaie rówaia Poissoa, całkowaie 1
Jeśli fukcja f(x) jest okresowa wówczas zamiast wielomiaów do jej iterpolacji (aproksymacji) lepiej użyć wielomiaów trygoometryczych tj rozwiąć fukcję w szereg Fouriera Dla fukcji okresowej o okresie 2π: f(x) a 1 0 2 + (a k cos(kx) + b k si(kx)) a k 1 ¼ k1 Z ¼ ¼ f(t)cos(kt)dt Jeśli fukcja f(x) jest rzeczywista wówczas zwykły szereg Fouriera jest częścią rzeczywistą zespoloego szeregu Fouriera: Z ¼ bf(k) 1 2¼ ¼ 1 2 (a k Ib k ) k 0 Dla ciągu współczyików f(t)[cos(kt) Isi(kt)]dt b k 1 ¼ Z ¼ ¼ f(t)si(kt)dt defiiujemy [a k ] 1 k0 [b k ] 1 k1 b 0 0 a k a k b k b k Fukcję możemy też zapisać w postaci zespoloego szeregu Fouriera f(x)» bf(k) 1 2¼ 1 k 1 Z ¼ ¼ bf(k)e Ikx f(t)e Ikt dt c k 1 2 (a k Ib k ) Co prowadzi do zależości pomiędzy szeregiem rzeczywistym i zespoloym a 0 2 + (a k cos(kx) + b k si(kx)) k1 k c k e Ikx 2
Fukcje E k (x) e Ikx ; k 0; 1; 2; : : : geerują ciąg ortoormalych fukcji w zespoloej przestrzei Hilberta Iloczy skalary w tej przestrzei: hf; gi 1 2¼ he k ; E i 1 2¼ Z ¼ ¼ Z ¼ f(x)g (x)dx Dyspoując tablicą wartości fukcji f i g w węzłach siatki, iloczy wewętrzy moża zapisać w postaci dyskretej: 1 hf; gi 1 1 2¼ 1 2¼ 1 2¼ j0 ¼ Z ¼ ¼ Z ¼ ¼ E k (x)e (x)dx e ikx e Ix dx e I(k )x dx e I(k )x I(k ) x¼ x ¼ 0 f(2¼j)g (2¼j) Własości iloczyu wewętrzego/skalarego: oraz związek z ormą euklidesową Dla każdego Dowód hf; fi 0 hf; gi hg; fi h f + g; hi hf; hi + hg; hi kfk p hf; fi 1 he k ; E m i 1 1 j0 ½ 1 E k 2¼j 1 k m k m 0 1 j0 2 Z 2 Z 2¼j E m he 2¼I(k m) i j 3
e 2¼I(k m) 1, k m Dla pozostałych przypadków moża się posłużyć wyrażeiem a sumę szeregu: co daje 1 j0 j 1 1 ; 6 1 ze względu a postać liczika Fukcje E k (x) tworzą ciąg ortogoalych (ortoormalych) jedomiaów ekspoecjalych, z których moża utworzyć wielomia: P (x) 2 Z e 2¼I(k m) 1 e 2¼I(k m) 1 0 1 k0 c k e Ikx c k E k (x) k0 1 k0 c k (e Ix ) k Załóżmy, że jej wartości są określoe a siatce zbudowaej z rówoodległych węzłów: x j 2¼j Wielomia iterpolujący ma wówczas postać f(x) P (x) ; j 0; 1; : : : ; 1 1 c k E k (x) k0 Współczyiki zajdziemy licząc iloczyy skalare (lewa i prawa stroa) z kolejymi jedomiaami E m hf; E m i 1 k0 Ciąg współczyików c m wyzaczaych zgodie z powyższym wzorem defiiuje dyskretą trasformatę Fouriera (DFT to wyik przekształceia) 1 f(x) P (x) c k he k ; E m i 1 k0 hf; E k ie k k0 c k ± k;m c m Wielomia ekspoecjaly może posłużyć do iterpolacji fukcji f(x) W metodzie ajmiejszych kwadratów wielomia te może posłużyć do aproksymacji fukcji f(x) gdy stopień wielomiau aproksymującego jest miejszy od -1 4
DFT moża zapisać wykorzystując postać macierzową Ef c 0 B @ E 0 (x 0 ) E 0 (x 1 ) : : : E 0 (x 1 ) E 1 (x 0 ) E 1 (x 1 ) : : : E 1 (x 1 ) E 1 (x 0 ) E 1 (x 1 ) : : : E 1 (x 1 ) 1 0 C B A @ f(x 0 ) f(x 1 ) f(x 1 ) 1 C A 0 B @ c 0 c 1 c 1 1 C A Trasformatę moża zaleźć wykoując tylko możeie wektora przez macierz Ale w te sposób ależy wykoać O( 2 ) operacji arytmetyczych Jedakże macierz E ma specyficzą postać jej elemety są ze sobą ściśle powiązae co moża wykorzystać w celu zmiejszeia akładu obliczeń Dzięki FFT liczba wykoywaych operacji może zmaleć do wartości O(log 2 ) 2 log 2 () 1024 1048576 10240 4096 16777216 49152 16384 268435456 229375 5
FFT z rozkładem a czyiki pierwsze (PFA - Prime Factor Algorithm) Liczbę aturalą możemy zapisać jako r 1 r 2 : : : r p gdzie: r i są liczbami pierwszymi przykład 56 2 2 2 7 Idea algorytmu PFA polega a zastąpieiu obliczeń DFT w jedym wymiarze (skala 2 ), a obliczeiu iloczyu p trasformat DFT skalujących się jak r 2 1; r 2 2; : : : ; r 2 p; Algorytm PFA zmiejsza akład obliczeń z 2 do (r 1 +r 2 ++r p ) Zakładamy, że fukcja f(x) jest stablicowaa w węzłach x j 2¼j ; j 0; 1; : : : ; 1 Fucję rozwijamy w bazie wielomiaów ekspoecjalych F (x) k0 c k e Ikx Wykorzystując własości wielomiaów, współczyiki rozwiięcia zapisujemy w postaci c k 1 Ozaczeia: f(x j )e Ikx j ; k 0; 1; : : : ; 1 j0 w exp I2¼ a j 1 f 2¼j Rozkładamy liczbę węzłów a iloczy liczb pierwszych: r 1 r 2 : : : r p i wprowadzamy koleje ozaczeia: º r º+1 r º+2 : : : r p º 0; 1; : : : ; p 1 p 1 ¾ c k r 1 r 2 : : : r º º j0 a j w kj py iº+1 r i 6
Zmieą k zapisujemy w postaci: k 1 1 + 2 2 + : : : + p p 1 2 f0; 1; : : : ; r 1 1g 2 2 f0; 1; : : : ; r 2 1g p 2 f0; 1; : : : ; r p 1g k º p iº+1 i i j º º p 1 iº k º < º ; º 0; 1; : : : ; p l i+1 i i podobie ułamek j/: j l 1 0 + l 2 1 + : : : l p p 1 l 1 2 f0; 1; : : : ; r 1 1g l 2 2 f0; 1; : : : ; r 2 1g l p 2 f0; 1; : : : ; r p 1g k j à p i1 p 1 º0 p 1 º0 M 2 Z! à p 1 i i l º+1 º à l º+1 k º º º0 p iº+1 + M l º+1 º! i i! + M 7
Wykorzystujemy uzyskay wyik do obliczeia w kj w kj exp exp p 1 Y º0 p 1 Y º0 2¼I kj à à p 1 2¼I exp w k º l º+1 º º0 l º+1 k º º 2¼I l º+1k º º + M!! Wykorzystujemy teraz zależość pomiędzy wskaźikiem j a l 1,l 2,,l p j l 1 + l 2 r 1 + : : : + l p r 1 r 2 : : : r p w sumowaiu Sumę po j możemy zapisać jako j0! r 1 1 l 1 0 r 2 1 l 2 0 : : : r p 1 l p 0 poieważ każdą wartość j realizuje odpowiedia kombiacja wskaźików l 1,l 2,,l p To przejście pozwala zapisać współczyik c k jako iloczy p trasformat DFT jedowymiarowych Chcemy zaleźć wartość współczyików c k c k j0 j0 f(x j ) exp Ik 2¼j f(x j ) wkj 8
c k c(l 1 ; l 2 ; : : : ; l p ) r 1 1 l 1 0 r 2 1 l 2 0 : : : r p 1 l p 0 c (0) (l 1 ; l 2 ; : : : ; l p )w k 0l 1 0 w k 1l 2 1 : : : w k p 1l p p 1 Startujemy od obliczeia jedowymiarowego DFT dla wartości fukcji w węzłach, których ideksy zależą od aktualych wartości l 1,l 2,,l p c 0 f(x j) ; j l 1 + l 2 r 1 + : : : + l p r 1 r 2 : : : r p Takich trasformat będzie /r p, a wyzaczeie każdej z ich wiąże się z akładem obliczeń rzędu (r p ) 2 c (1) (l 1 ; l 2 ; : : : ; p ) r p 1 l p 0 c (0) (l 1 ; l 2 ; : : : ; l p )w k p 1l p p 1 astępie obliczamy c (2) (l 1 ; l 2 ; : : : ; p 1 ; p ) r p 1 1 l p 1 0 c (1) (l 1 ; l 2 ; : : : ; l p 1 ; p )w k p 2l p 1 p 2 Po wyzaczeiu w te sposób p trasformat dostajemy żąday współczyik c k (procedurę powtarzamy dla każdej wartości k) c k c (p) ( 1 ; 2 ; : : : ; p 1 ; p ) r 1 1 l 1 0 c (p 1) (l 1 ; 2 ; : : : ; p 1 ; p )w k 0l 1 0 9
Algorytm radix-2 Osobo grupujemy składiki a) parzyste j 2m ajprostszy algorytm FFT to radix-2 (Cooley- Tukey) opracoway w latach 60 wieku w celu szybkiej aalizy daych sejsmologiczych b) ieparzyste j 2m + 1 aszym zadaiem jest obliczeie współczyików trasformaty Fouriera (DFT) c k, ale wykoując jak ajmiej obliczeń Zakładamy że całkowita liczba węzłów jest potęgą 2: x j 2¼ j j 0; 1; 2; : : : ; 1 2 r ; r 2 c k he k ; fi 1 j0 1 j0 1 j0 f(x j )E k (x j ) f(x j )exp ( Ix j k) f j exp I 2¼ jk c k c k + +exp 2 1 m0 2 1 m0 2 1 m0 f 2m exp I 2¼ (2m)k f 2m+1 exp I 2¼ (2m + 1)k f 2m exp I 2¼ 2 1 k I 2¼ 2 mk m0 f 2m+1 exp I 2¼ 2 mk 10
c k p k + ' k q k p k q k 2 1 m0 2 1 m0 ' k exp Korzystamy teraz z okresowości wyrazów p k oraz q k : p k+2 p k f 2m exp f 2m+1 exp I 2¼ k I 2¼ 2 mk I 2¼ 2 mk q k+2 q k Uwagi: a) współczyiki p k oraz q k moża wyliczyć dzięki DFT akładem O(/2) 2 O( 2 /4) b) dodatkowo oszczędzamy czas wyzaczając tylko współczyiki dla poieważ c k 8 < : p k 2 k < 2 p k + ' k q k ; k < 2 ' k q k 2 ; k 2 atomiast czyik fazowy ma astępującą własość: ' k+2 exp I 2¼ k + 2 exp I 2¼ k exp exp I 2¼ k ' k I 2¼ 2 Kolejym krokiem w FFT jest podział sum w p k oraz w q k a sumy zawierające tylko elemety parzyste i ieparzyste Po podziale liczba elemetów w każdej z dwóch powstałych sum jest dwukrotie miejsza iż w elemecie macierzystym Proces rekurecyjego podziału kończymy gdy liczba elemetów jest rówa 1 11
Ie algorytmy FFT 1) Algorytm Wiograda/Radera DFT jest sformułowae w postaci cykliczego splotu Modyfikacja Wiograda algorytmu FFT działa gdy p m, p -liczba pierwsza 2) Split-radix modyfikacja algorytmu Cooleya-Tukeya W każdym kroku DFT jest wyrażaa jako suma DFT dla /2 oraz dwóch DFT dla /4 Jest to ajszybszy algorytm FFT 3) DST (discrete sie trasform) oraz DCT (discrete cosie trasform) trasformaty siusowa i kosiusowa, opłaca się je stosować gdy trasformację przeprowadzamy a fukcjach rzeczywistych Uikamy w te sposób operacji a liczbach zespoloych co jest kosztowe Wielowymiarowa FFT 1 2 : : : d c k1 ;k 2 ;:::;k d 1 2 j 1 0 j 2 0 : : : d j d 0 f j1 ;j 2 ;:::;j d exp j1 k 1 i2¼ + j 2k 2 1 2 + : : : + j dk d d Współczyki wyzacza się stosując algorytm jedowymiarowego FFT kolejo dla każdego z wymiarów 12
Zastosowaia FFT: 1) iterpolacja, aproksymacja 2) szybkie możeie 3) cyfrowe przetwarzaie sygału (p odszumiaie widmo częstotliwości) 4) kompresja daych 5) aaliza sygałów czasowych (korelacja, splot) 6) rozwiązywaie rówań różiczkowych (rów Poissoa) 13
Szybkie możeie wielomiaów przy użyciu FFT Chcemy obliczyć iloczy dwóch wielomiaów P (x) Q(x) i0 i0 a i x i b i x i Jeśli stopie wielomiaów są róże to je wyrówujemy dodając do wielomiau iższego stopia współczyiki rówe 0 Iloczy wielomiaów R(x) P (x)q(x) i;j0 a i b j x i+j i0 Dokoujemy reideksacji wskaźików i + j k! j k i a i x i j0 b j x j R(x) c k 2 2 k0 i0 i0 a i b k i a i b k i x k 2 k0 Jeśli współczyiki wielomiaów a i oraz b i potraktujemy jako współrzęde wektorów a [a 0 ; a 1 ; : : : ; a ] b [b 0 ; b 1 ; : : : ; b ] to wektor c jest ich splotem: c a b c k x k Korzystając z defiicji traformacji Fouriera dla splotu fukcji możemy zapisać c F F T 1 h F F T (~a~a~a)f F T ( ~ b ~ b~ b) i ~a~a~a [a 0 ; a 1 ; : : : ; a ; a ; : : : ; a 2 ] ~ b ~ b ~ b [b0 ; b 1 ; : : : ; b ; b ; : : : ; b 2 ] a i ; b i 0, i > 1 c 2 0 14
Filtracja sygału f(x) cos(x) + cos(2x) + cos(3x) FFT Dyskrymiacja szumu FFT -1 15
Rozwiązywaie rówaia Poissoa (2D, 3D) r 2 V r ½ r dokoujemy trasformacji (FFT) całego rówaia (do przestrzei odwrotej) k 2 V k ½ k skąd już łatwo wyzaczymy V k V k ½ k k 2 i gotowe rozwiązaie (w przestrzei rzeczywistej) V r F F T 1 fv k g Uwaga: musimy jeszcze uwzględić waruki brzegowe (WB) 1) jeśli WB są typu Dirichleta V r j brzeg V b 6 0 to wykoujemy DST-FFT dla wętrza obszaru, a WB uwzględiamy dokoując trasformat potecjału a brzegach wyiki dodajemy 2) jeśli WB są typu eumaa @V r @~ j brzeg 0 to wówczas stosujemy DCT-FFT dla wętrza obszaru WB są automatyczie spełioe Całkowaie Chcemy obliczyć całkę oddziaływaia dwóch gęstości ładuku/materii C która zawiera osobliwość Całkę możemy zapisać ieco iaczej Z b C V (~r 1 ) Z b a a Z b d~r 1 Z b a j~r 1 ~r 2 j 1 f(~r 1 ~r 2 ) f(~r 2 ~r 1 ) Potecjał V(r 1 ) jest splotem dwóch fukcji: gęstości i fukcji f Moża więc wykorzystać tu twierdzeie o splocie i jego trasformacie: F F T fv g F F T f½ 2 fg a d~r 2 ½ 1 (~r 1 )½ 2 (~r 2 ) j~r 1 ~r 2 j d~r 1 ½ 1 (~r 1 )V (~r 1 ) d~r 2 ½ 2 (~r 2 )f(~r 1 ~r 2 ) F F T f½ 2 g F F T f½ 2 g Trasformata odwrota ostatiego iloczyu daje poszukiway potecjał 16