Szybka trasformacja Fouriera (FFT Fast Fourier Trasform) Pla wykładu:. Trasformacja Fouriera, iloczy skalary. DFT - dyskreta trasformacja Fouriera 3. FFT szybka trasformacja Fouriera a) algorytm PFA b) algorytm Cooleya-Tukeya (radix-) c) wielowymiarowe FFT 4. Przykłady zastosowań: możeie wielomiaów, odszumiaie sygału, rozwiązaie rówaia Poissoa, całkowaie.
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 π: a0 f (x) + (ak cos(kx) + bk si(kx)) k ak ¼ bk ¼ ¼ 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: fb(k) k ¼ f (t)[cos(kt) Isi(kt)]dt ¼ ¼ (ak Ibk ) 0 Dla ciągu współczyików [ak ] k0 ¼ f (t)si(kt)dt ¼ defiiujemy b0 0 a k ak ck Fukcję możemy też zapisać w postaci zespoloego szeregu Fouriera f (x)» k fb(k) ¼ [bk ] k ¼ ¼ fb(k)eikx f (t)e Ikt dt b k bk (ak Ibk ) Co prowadzi do zależości pomiędzy szeregiem rzeczywistym i zespoloym a0 + (ak cos(kx) + bk si(kx)) ck eikx k k
Fukcje Własości iloczyu wewętrzego/skalarego: Ek (x) eikx ; k 0; ; ; : : : geerują ciąg ortoormalych fukcji w zespoloej przestrzei Hilberta. Iloczy skalary w tej przestrzei: hf; gi ¼ hek ; E i ¼ hf; gi hg; f i h f + g; hi hf; hi + hg; hi f (x)g (x)dx oraz związek z ormą euklidesową ¼ ¼ Ek (x)e (x)dx ¼ ¼ ¼ eikx e Ix dx ¼ ¼ ¼ ei(k )x dx ¼ ¼ I(k )x x¼ e 0 ¼ I(k ) x ¼ Dyspoując tablicą wartości fukcji f i g w węzłach siatki, iloczy wewętrzy moża zapisać w postaci dyskretej: hf; gi hf; f i 0 f (¼j )g (¼j ) j0 kf k Dla każdego p hf; f i hek ; Em i ½ 0 k m k m Dowód ¼j ¼j Ek Em j0 h ¼I(k m) ij e j0 3
e¼i(k m), k m ałóżmy, że jej wartości są określoe a siatce zbudowaej z rówoodległych węzłów: Dla pozostałych przypadków moża się posłużyć wyrażeiem a sumę szeregu: j0 co daje j ; xj ¼j ; j 0; ; : : : ; Wielomia iterpolujący ma wówczas postać 6 f (x) P (x) ck Ek (x) k0 e¼i(k m) 0 e¼i(k m) Współczyiki zajdziemy licząc iloczyy skalare (lewa i prawa stroa) z kolejymi jedomiaami E m ze względu a postać liczika. Fukcje Ek(x) tworzą ciąg ortogoalych (ortoormalych) jedomiaów ekspoecjalych, z których moża utworzyć wielomia: P (x) k0 ck eikx ck (eix )k k0 ck Ek (x) k0 Wielomia ekspoecjaly może posłużyć do iterpolacji fukcji f(x). hf; Em i k0 ck hek ; Em i ck ±k;m cm k0 Ciąg współczyików cm wyzaczaych zgodie z powyższym wzorem defiiuje dyskretą trasformatę Fouriera (DFT to wyik przekształceia). f (x) P (x) k0 hf; Ek iek 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 -. 4
DFT moża zapisać wykorzystując postać macierzową Ef c 0 B B B @ E0 (x0 ) E (x0 )... E0 (x ) E (x )... ::: :::... E0 (x ) E (x )... E (x0 ) E (x ) ::: E (x ) 0 CB CB CB A@ f (x0 ) f (x )... f (x ) 0 C B C B CB A @ c0 c... c C C C A Trasformatę moża zaleźć wykoując tylko możeie wektora przez macierz. Ale w te sposób ależy wykoać O() 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). log ( ) 04 048576 040 4096 67776 495 6384 68435456 9375 5
FFT z rozkładem a czyiki pierwsze (PFA - Prime Factor Algorithm) Liczbę aturalą możemy zapisać jako r r : : : rp gdzie: ri są liczbami pierwszymi przykład 56 7 Idea algorytmu PFA polega a zastąpieiu obliczeń DFT w jedym wymiarze (skala ), a obliczeiu iloczyu p trasformat DFT skalujących się jak r ; r ; : : : ; rp ; Algorytm PFA zmiejsza akład obliczeń z do (r+r+...+rp) akładamy, że fukcja f(x) jest stablicowaa w węzłach xj ¼j ; j 0; ; : : : ; Fucję rozwijamy w bazie wielomiaów ekspoecjalych F (x) Wykorzystując własości wielomiaów, współczyiki rozwiięcia zapisujemy w postaci ck f (xj )e Ikxj ; j0 k 0; ; : : : ; Ozaczeia: I¼ ¾ w exp ck aj wkj ¼j aj f j0 Rozkładamy liczbę węzłów a iloczy liczb pierwszych: r r : : : rp i wprowadzamy koleje ozaczeia: º rº+ rº+ : : : rp p Y ri iº+ º 0; ; : : : ; p p r r : : : rº º ck eikx k0 6
mieą k zapisujemy w postaci: k + + : : : + p p f0; ; : : : ; r g f0; ; : : : ; r g... kº p p li+ jº º i iº i i iº+ kº < º ; º 0; ; : : : ; p p f0; ; : : : ; rp g i podobie ułamek j/: j l l lp + +::: 0 p k j lp f0; ; : : : ; rp g i i i p lº+ º0 l f0; ; : : : ; r g l f0; ; : : : ; r g... Ã p º p! Ãp! lº+ Ã º0 p iº+ º! i i +M lº+ kº +M º º0 M 7
Wykorzystujemy uzyskay wyik do obliczeia wkj wkj kj exp ¼I Ã Ãp!! lº+ kº exp ¼I +M º º0 p Y lº+ kº exp ¼I º º0 p Y wºkº lº+ º0 Wykorzystujemy teraz zależość pomiędzy wskaźikiem j a l,l,...,lp j l + l r + : : : + lp r r : : : rp w sumowaiu. Sumę po j możemy zapisać jako j0! r r l 0 l 0 ::: rp lp 0 poieważ każdą wartość j realizuje odpowiedia kombiacja wskaźików l,l,...,lp. To przejście pozwala zapisać współczyik ck jako iloczy p trasformat DFT jedowymiarowych. Chcemy zaleźć wartość współczyików c k ck j0 j0 f (xj ) ¼j exp Ik f (xj ) kj w 8
ck c(l ; l ; : : : ; lp ) r r ::: l 0 l 0 rp k p c(0) (l ; l ; : : : ; lp )w0k0 l wk l : : : wp lp lp 0 Startujemy od obliczeia jedowymiarowego DFT dla wartości fukcji w węzłach, których ideksy zależą od aktualych wartości l,l,...,lp c0 f (xj ) ; j l + l r + : : : + lp r r : : : rp Takich trasformat będzie /rp, a wyzaczeie każdej z ich wiąże się z akładem obliczeń rzędu (r p) () c (l ; l ; : : : ; p ) rp k p c(0) (l ; l ; : : : ; lp )wp lp lp 0 astępie obliczamy () c (l ; l ; : : : ; p ; p ) rp k p c() (l ; l ; : : : ; lp ; p )wp lp lp 0 Po wyzaczeiu w te sposób p trasformat dostajemy żąday współczyik ck (procedurę powtarzamy dla każdej wartości k). ck c(p) ( ; ; : : : ; p ; p ) r c(p ) (l ; ; : : : ; p ; p )w0k0 l l 0 9
Algorytm radix- Osobo grupujemy składiki ajprostszy algorytm FFT to radix- (CooleyTukey) opracoway w latach 60 wieku w celu szybkiej aalizy daych sejsmologiczych. aszym zadaiem jest obliczeie współczyików trasformaty Fouriera (DFT) c k, ale wykoując jak ajmiej obliczeń. akładamy że całkowita liczba węzłów jest potęgą : ck xj j ¼ j 0; ; ; : : : ; r ; r hek ; f i f (xj )Ek (xj ) j0 f (xj )exp ( Ixj k) a) parzyste j m b) ieparzyste j m + ck ¼ fmexp I (m)k m0 + ¼ fm+ exp I (m + )k m0 ¼ ck fm exp I mk m0 ¼ ¼ +exp I k fm+ exp I mk m0 j0 j0 ¼ fj exp I jk 0
Uwagi: ck pk + 'k qk ¼ pk fm exp I mk m0 ¼ qk fm+ exp I mk m0 ¼ 'k exp I k b) dodatkowo oszczędzamy czas wyzaczając tylko współczyiki dla Korzystamy teraz z okresowości wyrazów p k oraz qk: pk+ pk qk+ qk atomiast czyik fazowy ma astępującą własość: 'k+ a) współczyiki pk oraz qk moża wyliczyć dzięki DFT akładem O(/)O(/4) ¼ exp I k+ ¼ ¼ exp I k exp I ¼ exp I k 'k k< poieważ ck 8 < pk + 'k qk ; : p ' q ; k k k k< k Kolejym krokiem w FFT jest podział sum w p k oraz w qk 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.
Ie algorytmy FFT ) Algorytm Wiograda/Radera DFT jest sformułowae w postaci cykliczego splotu. Modyfikacja Wiograda algorytmu FFT działa gdy pm, p -liczba pierwsza. ) Split-radix modyfikacja algorytmu Cooleya-Tukeya. W każdym kroku DFT jest wyrażaa jako suma DFT dla / 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 : : : d ck ;k ;:::;kd j 0 j 0 ::: d jd 0 j k j k jd kd fj ;j ;:::;jd exp i¼ + + ::: + d Współczyki wyzacza się stosując algorytm jedowymiarowego FFT kolejo dla każdego z wymiarów.
astosowaia FFT: ) ) 3) 4) 5) 6) iterpolacja, aproksymacja szybkie możeie cyfrowe przetwarzaie sygału (p. odszumiaie widmo częstotliwości) kompresja daych aaliza sygałów czasowych (korelacja, splot) rozwiązywaie rówań różiczkowych (rów. Poissoa) 3
Szybkie możeie wielomiaów przy użyciu FFT R(x) P (x) Q(x) i0 ai x ck i b i xi ai xi i0 ck xk k0 c 0 a [a0 ; a ; : : : ; a ] b [b0 ; b ; : : : ; b ] to wektor c jest ich splotem: Iloczy wielomiaów P (x)q(x) ai bk i Jeśli współczyiki wielomiaów a i oraz bi potraktujemy jako współrzęde wektorów Jeśli stopie wielomiaów są róże to je wyrówujemy dodając do wielomiau iższego stopia współczyiki rówe 0. i0 i0 R(x) ai bk i xk k0 i0 Chcemy obliczyć iloczy dwóch wielomiaów ai bj xi+j i;j0 Dokoujemy reideksacji wskaźików i+j k!j k i j0 bj xj c a b Korzystając z defiicji traformacji Fouriera dla splotu fukcji możemy zapisać c FFT h i ~)F F T (~bb) F F T (~ a a ~ [a0 ; a ; : : : ; a ; a ; : : : ; a ] ~b [b0 ; b ; : : : ; b ; b ; : : : ; b ] a i ; bi 0, i > 4
Filtracja sygału f (x) cos(x) + cos(x) + cos(3x) FFT Dyskrymiacja szumu FFT- 5
Rozwiązywaie rówaia Poissoa (D, 3D) r Vr ½r dokoujemy trasformacji (FFT) całego rówaia (do przestrzei odwrotej) k Vk ½ k skąd już łatwo wyzaczymy Vk ½k Vk k 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 Uwaga: musimy jeszcze uwzględić waruki brzegowe (WB). b a ½ (~r )½ (~r ) d~r j~r ~r j która zawiera osobliwość. Całkę możemy zapisać ieco iaczej C b d~r ½ (~r )V (~r ) a V (~r ) a ) jeśli WB są typu Dirichleta Vr jbrzeg Vb 6 0 d~r a i gotowe rozwiązaie (w przestrzei rzeczywistej) Vr F F T fvk g b b d~r ½ (~r )f (~r ~r ) j~r ~r j f (~r ~r ) f (~r ~r ) to wykoujemy DST-FFT dla wętrza obszaru, a WB uwzględiamy dokoując trasformat potecjału a brzegach wyiki dodajemy Potecjał V(r) jest splotem dwóch fukcji: gęstości i fukcji f. Moża więc wykorzystać tu twierdzeie o splocie i jego trasformacie: ) jeśli WB są typu eumaa F F T fv g @Vr jbrzeg 0 @~ F F T f½ f g F F T f½g F F T f½ g Trasformata odwrota ostatiego iloczyu daje 6 poszukiway potecjał.
Przykład. Geerowaie pola prędkości w rówaiu adwekcji ³(x; y) Rówaie adwekcji du ~ ru V dt adajemy fukcję wirowości (x x0 ) + (y y0 ) ³(x; y) exp ¾ ª(x; y) Rozwiązując rówaie Poissoa dla fukcji strumieia (x,y) r ª³ z WB (DCT - FFTW) @ª 0 @~ możemy otrzymać pole prędkości Vx @ª @y Vy @ª @x 7
Rozwiązaie - plamka oleju poruszająca się po powierzchii cieczy du ~ ru V dt u(x; y; t) 8