KTE/TEVS - Rychlá Fourierova transformace Pavel Karban Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni 10.11.011
Outline 1 Motivace FT Fourierova transformace 3 DFT Diskrétní Fourierova transformace 4 FFT - Rychlá Fourierova transformace Pavel Karban Rychlá Fourierova transformace /34
Outline 1 Motivace FT Fourierova transformace 3 DFT Diskrétní Fourierova transformace 4 FFT - Rychlá Fourierova transformace Pavel Karban Rychlá Fourierova transformace 3/34
Motivace Co je Fourierova transformace? Fourierova transformace převádí spojitou funkci z časové oblasti do oblasti kmitočtové. Co je rychlá Fourierova transformace (FFT Fast Fourier Transform)? FFT je rychlá verze diskrétní Fourierovy transformace (DFT - Discrete Fourier Transform). Dobře, co je tedy diskrétní Fourierova transformace? DFT je transformace, která převádí diskrétní signál v časové oblasti do frekvenční oblasti. Tato transformace nachází uplatnění ve zpracování signálu v reálném čase na pomalých procesorech jakou jsou například DSP. Pavel Karban Rychlá Fourierova transformace 4/34
Outline 1 Motivace FT Fourierova transformace 3 DFT Diskrétní Fourierova transformace 4 FFT - Rychlá Fourierova transformace Pavel Karban Rychlá Fourierova transformace 5/34
Fourierova transformace Základní myšlenkou je Fourierovy transformace je, že každou spojitou funkci lze zapsat jako součet nekonečné řady 1 f (t) = a 0 + (a n cos nω 0t + b n sin nω 0t) = c ne jnω 0t n=1 n=1 Fourierova transformace převádí funkci z časové oblasti do oblasti kmitočtové. Je silnější než Laplaceova transformace, která umožňuje zacházet pouze se signály pro čas t > 0 s počáteční podmínkou, zatímco Fourierova transformace umí zacházet i s časy t < 0. Spojitá Fourierova transformace je definována vztahem X(jω) = x(t) e jωt dt. 1 sin x = ejx e jx j Pavel Karban Rychlá Fourierova transformace 6/34
Fourierova transformace Linearita Lineární kombinaci signálů odpovídá lineární kombinace jejich spekter. Posunutí Amplitudové spektrum posunutého signálu se nemění, mění se jen fázové spektrum a to úměrně zpoždění a kmitočtu. Na rozdíl od věty o translaci v Laplaceově transformaci platí věta pro libovolné a, tedy i pro t < 0. Pavel Karban Rychlá Fourierova transformace 7/34
Fourierova transformace Fourierův obraz jednotkového skoku Mějme funkci ( f (t) = t > 1 ) ( t < 1 ) Dosazením do základního definičního vztahu tranformace získáme X(jω) = 0,5 1 e jωt dt = = sin 0,5ω. ω 0,5 sin x = ejx e jx j Pavel Karban Rychlá Fourierova transformace 8/34
Fourierova transformace funkce spektrum 1.0 0.8 0.6 0.4 0. 0.0.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5.0 t (s) 1.0 0.8 0.6 0.4 0. 0.0 0 4 6 8 10 f (Hz) f (t) = ( t > 1 ) ( t < 1 ) Pavel Karban Rychlá Fourierova transformace 9/34
Fourierova transformace funkce 1.0 0.5 0.0 0.5 1.0.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5.0 t (s) spektrum 0.5 0.4 0.3 0. 0.1 0.0 0 4 6 8 10 f (Hz) f (t) = cos(π5t) e πt Pavel Karban Rychlá Fourierova transformace 10/34
Outline 1 Motivace FT Fourierova transformace 3 DFT Diskrétní Fourierova transformace 4 FFT - Rychlá Fourierova transformace Pavel Karban Rychlá Fourierova transformace 11/34
Diskrétní Fourierova transformace V současné době se číslicové signály užívají daleko častěji než analogové. To znamená, že jsou zadány v podobě číslicových řad a ne nějakých funkcí. Z toho ale plyne, že v takových případech klasické Fourierovy řady nemůžeme použít (protože ty lze aplikovat pouze na dané funkce času). Kromě toho, číslicové signály jsou vesměs konečné a velmi často náhodné. Jak je tedy můžeme analyzovat? Za tím účelem byla vyvinuta metodika použitelná pro zpracování periodických vzorkovaných číslicových signálů. Tato metodika byla založena na požadavku, že pro vzorkovaný periodický signál musí dát výsledek stejný, jako pro původní signál spojitý (nevzorkovaný). Pavel Karban Rychlá Fourierova transformace 1/34
Diskrétní Fourierova transformace Uvažujme řadu čísel s N prvky f 0, f 1,..., f N 1 pro něž platí f i = f (t i), kde t i = i t pro i = 1,,..., N 1. O této řadě se předpokládá, že se periodicky opakuje, tedy f i = z i + N. Její Fourierova transformace je definována N 1 F n = f k e j π N kn, n = 0, 1,..., N 1. k=0 Fourierova transformace je schopna odhalit periodicitu v datech a poměry mezi jednotlivými amplitudami. Je třeba si uvědomit, že je-li původní série dat reálná, je série obrazových dat F n obecně komplexní. Dále platí, že F n = F N n pro k = 1,,..., N 1. A protože je F 0 = F n a z důvodů periodicity současně F 0 = F n, je F 0 = F n = F n, takže tento prvek je reálný (a představuje vlastně jakousi stejnosměrnou složku spektra). Pavel Karban Rychlá Fourierova transformace 13/34
Diskrétní Fourierova transformace 4 3 1 f(t) 0 1 3 4 0.0 0.5 1.0 1.5.0 t (s) f (t) = cos(π0t) t Pavel Karban Rychlá Fourierova transformace 14/34
Diskrétní Fourierova transformace ϕ (deg.) F ( ) 180 160 140 N = 56 10 100 80 60 40 0 0 0 50 100 150 00 50 300 00 150 100 50 50 0 100 150 00 0 50 100 150 00 50 300 N ( ) Spektrum je dvoustranné (F 0 = F n = F n) Pavel Karban Rychlá Fourierova transformace 15/34
Diskrétní Fourierova transformace 0.7 0.6 0.5 0.4 0.3 0. 0.1 0.0 0 5 10 15 0 5 30 35 40 f (Hz) f = k fs N Pavel Karban Rychlá Fourierova transformace 16/34
Diskrétní Fourierova transformace Při práci s Fourierovou transformací číslicových signálů je tedy třeba vzít v úvahu, že pro N vzorků stačí vypočítat jen prvních N / hodnot dvojstranného spektra a ty pak pro získání jednostranného spektra násobit dvěma (protože zbylých N / hodnot jsou veličiny k nim komplexně sdružené a amplitudy spektra jsou dány moduly těchto hodnot). Odtud plyne, že počet kmitočtů ve spektru je také nejvýše rovno N /. Nejvyšší kmitočet takto spočtený se nazývá Nyquistův. Pokud původní signál neobsahuje vyšší kmitočty, než je právě kmitočet Nyquistův, lze jej uvedeným postupem ze vzorků zrekonstruovat zcela exaktně. Většinou se stává, že prvních N vzorků netvoří jednu periodu (je to dokonce téměř pravidlo). Pak ovšem získané hodnoty netvoří přesně spektrum, ale jen jeho aproximaci. Objevují se zde různé chyby a jevu jako celku se říká rozmazání spektra. Pavel Karban Rychlá Fourierova transformace 17/34
DFT - Vandermondova matice Na diskrétní Fourierovu transformaci N 1 F n = f k e j π N kn, n = 0, 1,..., N 1. k=0 se můžeme také dívat jako na Vandermondovu matici ω 0 0 ω 0 1... ω 0 (N 1) ω 1 0 ω 1 1... ω 1 (N 1) W =........ ω (N 1) 0 ω (N 1) 1... ω (N 1) (N 1), kde člen ω = e j π N kn. n je řádkový index a k představuje sloupcový index. Oba nabývají hodnot 0, 1,..., N 1. Diskrétní transformaci lze pak zapsat F = W f. Inverzní diskrétní transformaci lze zapsat ve tvaru f = W 1 F. Pavel Karban Rychlá Fourierova transformace 18/34
DFT - Vandermondova matice Příklad Vandermondovy matice pro N = [ ] 1 1 W =, 1 1 Jednotlivé členy získáme ω 1,1 = e j π 0 0 = 1, ω 1, = e j π 0 1 = 1, ω,1 = e j π 1 0 = 1, ω, = e j π 1 1 = e jπ = 1. Pavel Karban Rychlá Fourierova transformace 19/34
DFT - Vandermondova matice Příklad Vandermondovy matice pro N = 4 1 1 1 1 1 j 1 j W 4 = 1 1 1 1 1 j 1 j Příklad Vandermondovy matice pro N = 8 1 1 1 1 1 1 1 1 1 j j j 1 + j j + j 1 j 1 j 1 j 1 j 1 W 8 = j j j 1 + j j + j 1 1 1 1 1 1 1 1 1 + j j + j 1 j j j 1 j 1 j 1 j 1 j 1 + j j + j 1 j j j Pavel Karban Rychlá Fourierova transformace 0/34
Diskrétní Fourierova transformace Je zřejmé, že pro výše uvedený výpočet Fourierovy transformace je třeba určit N N koeficientů (složitost O(N )), což je značné množství a zejména tam, kde počet vzorků dosahuje tisíců nebo desetitisíců, lze očekávat, že počet operací bude značný. Zdlouhavost se pak projevuje zejména tam, kde dochází k opakovaným výpočtům na mnoha signálech. Už od počátku 0. století proto existovala snaha o jejich redukci. Ta se povedla v 60. letech 0. století (Cooley-Tukey algoritmus) a od té doby se možnosti úsporných metod stále zvyšují. Základní metodě tohoto typu říkáme rychlá Fourierova transformace. Pavel Karban Rychlá Fourierova transformace 1/34
Outline 1 Motivace FT Fourierova transformace 3 DFT Diskrétní Fourierova transformace 4 FFT - Rychlá Fourierova transformace Pavel Karban Rychlá Fourierova transformace /34
Rychlá Fourierova transformace Rychlá Fourierova transformace je způsob výpočtu diskrétní Fourierovy transformace, kterým získáme stejné výsledky, ale mnohem rychleji. Klasická metoda DFT potřebuje O(N ) operací zatímco pouze O(N log N ). Nejznámnější algoritmus výpočtu představili v roce 1965 J. W. Cooley and J. W. Tukey (stejný algoritmus byl znám Carlu Friedrichu Gaussovi v roce již v roce 1805). Pavel Karban Rychlá Fourierova transformace 3/34
Rychlá Fourierova transformace V klasické podobě lze provádět pro signály, u nichž bylo sejmuto p vzorků, v současné době existují už i sofistikovanější algoritmy, které umožňují provést rychlou transformaci pro libovolný počet vzorků. Vysvětleme si stručně postup klasické metody. N 1 F n = f k e j π N kn, n = 1,,..., N 1. k=0 Nyní si rozdělme vzorky signálu na dvě skupiny, a to sudé vzorky a liché vzorky následujícím způsobem e n = f n, o n = f n+1, n = 0, 1,..., N 1. 0 1 3 4 5 6 7 0 4 6 1 3 5 7 Pavel Karban Rychlá Fourierova transformace 4/34
Rychlá Fourierova transformace Pak lze zapsat transformaci ve tvaru = N 1 k=0 F n = N 1 k=0 e n e j π N (k)n + e j π N n ) (e n e j π N (k)n + o n e j π N (k+1)n = N 1 k=0 o n e j π N (k)n, n = 0, 1,..., N 1. Nyní označme E n = N 1 k=0 e n e j π N (k)n, O n = N 1 k=0 o n e j π N (k)n. Pavel Karban Rychlá Fourierova transformace 5/34
Rychlá Fourierova transformace E n = N 1 k=0 e n e j π N (k)n, O n = N 1 k=0 o n e j π N (k)n. Obdobným postupem bychom získali členy pro n N. Vzhledem k periodicitě platí E n+ N = E n a O n+ N = O n. Pomocí výrazů E a O lze pak výslednou transformaci ve tvaru F n = E n N E n + e πi N n O n pro n < N e πi N (n N ) O n N pro n N. Pavel Karban Rychlá Fourierova transformace 6/34
Rychlá Fourierova transformace Tím jsme transformaci obsahující N bodů rozdělili na dvě transformace obsahující N / bodů a stejným způsobem budeme pokračovat dál směrem do dalších dělení, až bude výsledná posloupnost mít jen dva prvky. Počet operací kompletní transformace se tak zmenší z O(N ) na O(N log N ). 0 1 3 4 5 6 7 0 4 6 1 3 5 7 0 4 6 1 5 3 7 0 4 6 1 5 3 7 Jednoduchá, ale ne efektivní, implementace je formou rekurzivní funkce. Pavel Karban Rychlá Fourierova transformace 7/34
Rychlá Fourierova transformace 1 d e f fft_ct_dt ( x ) : N = l e n ( x ) 3 4 i f N & 1 : 5 r e t u r n [ x math. e ( j math. p i 1. 0 / N ) ] 6 e l s e : 7 M = N // 8 9 x_e = x [ 0 : N : ] 10 x_o = x [ 1 : N : ] 11 X_e = fft_ct_dt ( x_e ) 1 X_o = fft_ct_dt ( x_o ) 13 14 X = [ ] 15 f o r n i n r a n g e (M) : 16 X += [ X_e [ n ] + X_o [ n ] 17 math. e ( j math. p i ( n ) / N ) ] 18 f o r n i n r a n g e (M,N ) : 19 X += [ X_e [ n M] X_o [ n M] 0 math. e ( j math. p i ( n M) / N ) ] 1 r e t u r n X Pavel Karban Rychlá Fourierova transformace 8/34
Rychlá Fourierova transformace 1.0 0.5 y ( ) 0.0 0.5 1.0 0 5 10 15 0 5 30 t ( ) Funkce f (t) = cos(πft) o frekvenci f = 0,1 Hz vzorkovaná f s = 1 Hz Pavel Karban Rychlá Fourierova transformace 9/34
Rychlá Fourierova transformace 14 1 N = 3 10 8 6 4 0 0.0 0. 0.4 0.6 0.8 1.0 16 14 N = 64 1 10 8 6 4 0 0.0 0. 0.4 0.6 0.8 1.0 16 14 N = 56 1 10 8 6 4 0 0.0 0. 0.4 0.6 0.8 1.0 f/f s Spektrum pro různé hodnoty N (N musí být vždy nejméně tak velké jako je počet vzorků) Pavel Karban Rychlá Fourierova transformace 30/34
Diskrétní Fourierova transformace 6 4 f(t) 0 4 6 0.0 0. 0.4 0.6 0.8 1.0 t (s) f = cos(π10t) + sin(π7t) + šum s nulovou průměrnou hodnotou Pavel Karban Rychlá Fourierova transformace 31/34
Diskrétní Fourierova transformace 1.0 0.8 0.6 0.4 0. 0.0 0 5 10 15 0 f (Hz) f = cos(π10t) + sin(π7t) + šum s nulovou průměrnou hodnotou Pavel Karban Rychlá Fourierova transformace 3/34
Děkuji za pozornost Pavel Karban Rychlá Fourierova transformace 33/34