Fourierova transformace Jean Baptiste Joseph Fourier (768-83) Jeho obdivovatel (nedatováno)
Opáčko harmonických signálů Spojitý harmonický signál ( ) = cos( ω + ϕ ) x t C t C amplituda ω úhlová frekvence [ rad / s ] ϕ počáteční fáze [ rad ] f skutečná frekvence 2π f = T základní perioda T ω 2π = = f ω Příklad: x( t) = 4cos( 3t.5) 4 3 2 - -2-3 C cos(φ ) -4 -.5.5.5 2 2.5 3 3.5 4 T =/f =2π/ω C = 4, ω = 3, ϕ =.5 Chyták: Proč jsou tam indexy? Cvičení: vyrobte několik harmonických signálů s různou úhlovou frekvencí a fází. Pozorujte data, ať vám zalezou pod kůži.
Diskrétní harmonický signál [ ] = cos( ω + ϕ ) xn C n C amplituda ω úhlová frekvence [ rad ] ϕ počáteční fáze [ rad ] N základní perioda: pozor!!! N Musí platit že cos 2π ω ( ω( n+ N) ) = cos( ωn) Tedy rozdíl argumentů funkce cos musí být násobek základní periody funkce cos, což je 2π. ( ) ω ω ω π n+ N n= N = k2 Příklad xn [ ] cos ( 8 π n/ 3 ) =, tedy ω = 8 π / 3 Dosadím do vzorečku 8π 3 N k2 π =, tedy 4N = 3k a mám řešení 4 = k, N = 3 je základní perioda.8.6.4.2 -.2 -.4 -.6 -.8 - -5 5 5 2 25 3 35 N =3
Proč je potřeba vědět hodně o harmonických funkcích? Protože Fourierova dekompozice rozdělí signál na hromadu sinusovek a cosinusovek. Jde to vůbec? U diskrétních funkcí vždycky U spojitých funkcí nejdou ostré rohy, ale můžeme se k nim hooodně přiblížit Takže to jde. A k čemu to je? Proč vůbec rozděluji signál na hromadu harmonických funkcí? Protože mi to o signálu hodně řekne!
Fourierova transformace a signály Signálů je spousta druhů (to už víte) a podle toho existují různé druhy Fourierovy transformace: Cože? Tolik různých Fourierů? (a to ještě existují další verze, např. reálná DFT, komplexní DFT, FFT, ). Reálně jsme schopni spočítat pouze DFT
Reálná DFT - základní myšlenka (stále stejný trik jako u konvoluce) Signál rozložím na hromadu cosinusovek a sinusovek. Kolik? Je-li vstupní signál N (od do N-), pak na N/2+ sinusovek a N/2+ cosinusovek. Jakých? Tyto harmonické funkce mají postupně vyšší a vyšší frekvence, a to tak šikovně, že se do daného signálu vejdou právě x, x, 2x,. U harmonických funkcí s takto danou frekvencí se mění pouze amplituda. K čemu to? Amplitudy nám říkají, jak moc dané frekvence je v původním signálu Co je vlastně výsledkem? Amplitudy harmonických funkcí (frekvence jsou dané) Sedí to? Měl jsem N vzorků, teď mám N+2 vzorků! Jak to??? (první a poslední sinusovka má vždy amplitudu, takže ve skutečnosti to sedí) Příklad: Mám signál o 6 vzorcích (-5). Rozložím ho tedy na 9 cosinusovek a 9 sinusovek. Ty mají stejný počet prvků jako původní signál. Když všechny harmonické sečtu, dostanu zpátky původní signál. Chyták: jakou jednotku má x-ová osa u harmonických funkcí?
cos sin Původní signál (časová oblast)
Reálná / komplexní DFT Reálná DFT pochopí i dítě ReX a ImX jsou jen označení! Z N vzorků dostanu N+2 vzorků Co je na vodorovné ose? Co je na svislé ose? Komplexní DFT tohle je v Matlabu Všechny prvky jsou komplexní č. Z N vzorků dostanu N vzorků Matematicky elegantní Poznámka obrázek není úplně správně, poznáte proč?
Dopředná DFT (reálná) Jak to spočítám? N [ ] = [ ] cos( 2 π / ) ReX k x j kj N j= N [ ] = [ ] sin ( 2 π / ) ImX k x j kj N j= Slovně: každý vzorek ve frekvenční oblasti najdu tak, že vynásobím časový signál sinusovkou nebo kosinusovou kterou hledám a všechno sečtu. Podivnost: mínus ve druhém vztahu jen kvůli kompatibilitě s komplexní DFT. Cvičení: naprogramujte reálnou DFT
Co jsme to dostali? Konstanta 2 casova oblast - konstanta 2.5 2 9.5 9 2 4 6 cas [sec] ReX 5 5-5 2 3 x - ImX 5-5 2 3 Co je to za podivnosti v ImX?
Sinusovka casova oblast - sinusovka casova oblast - sinusovka.5.5 -.5 -.5 -.5.5 2 cas [sec] ReX 8 ImX -.5.5 2 cas [sec] ReX 4 5 ImX 6 4 2 - -2 3 2-5 - -5-2 5 5 2-3 5 5 2-5 5 2-2 5 5 2
Dvě sinusovky 2 casova oblast - dve sinusovky - -2.5.5 2 cas [sec] ReX 4 3 2 5-5 - -5 ImX - 5 5 2-2 5 5 2
Co je na vodorovné ose? Číslo vzorku (sample number) [-] o to mají rádi programátoři o rozsah -N/2 Podíl vzorkovací frekvence (fraction of sampling rate) f [-] o Nejvyšší frekvence je polovina vzorkovací frekvence (Nyquistův teorém) o Rozsah -,5 Vlastní frekvence (natural frequency) ω [rad] o Rozsah -π Frekvence [Hz] o Nejlépe pochopitelné (čísla co dávají konkrétní smysl) o Vztaženo ke konkrétní vzorkovací frekvenci o Rozsah DC-polovina vzorkovací frekvence Příklad: Jak napsat kosinusovou? [ ] = cos( 2 π kn / N ) [ ] = cos( 2π fn) [ ] = cos( ωn) c n c n cn
Polární zobrazení Citace: když se budete snažit pochopit pravoúhlé zobrazení, vybuchne vám hlava Jak to zobrazit jinak? Dvojici v pravoúhlých souřadnicích (aktuální vzorek ve frekvenční oblasti) si představím jako vektor. Převedením do polárních souřadnic: z dvojice (Re,Im) dostanu opět dvojici: Magnituda (modul, absolutní hodnota, ) Fáze (argument, úhel, )
Polární zobrazení Převod pravoúhlé / polární Převod polární / pravoúhlé Proč je polární zobrazení tak boží? [ ] = [ ] + [ ] ImX [ k] [ ] = arc tan ReX [ k] 2 2 MagX k ReX k ImX k FazeX k [ ] = [ ] cos [ ] [ ] = [ ] sin [ ] ( ) ( ) ReX k MagX k FazeX k ImX k MagX k FazeX k Hned vidím, jaké frekvence tam jsou a jaké ne, jak se mi mění fáze, je to human readable. Cvičení: naprogramujte si převodník z pravoúhlého zobrazení DFT na polární
Poznámky k fázi. bacha na dělení nulou (Im/Re) 2. bacha znaménka u arctan (jinak bude fáze jen v rozmezí, π π ) 2 2 if (ReX[k] < ) AND (ImX[k] < ) THEN Faze[k]=Faze[k] - PI if (ReX[k] < ) AND (ImX[k] >= ) THEN Faze[k]=Faze[k] + PI 3. malé hodnoty magnitudy nesmyslné hodnoty fáze
4. Nespojitost fáze Sinusovky jsou periodické, a fázový posuv o ϕ je stejný jako ϕ+ 2 π, ϕ+ 4 π,... Takže možností kolik fáze vlastně přesně je, je nekonečno. Při výpočtu se vybere vždy ta nejmenší. Pro představu může pomoct rozbalená fáze na obrázku
5. Magnituda je vždy kladná Na obrázku máme příklad. Reálná část je pěkně hladká, imaginární je nulová. V polárním zobrazení ale máme ostré rohy, fuj fuj. Je tomu tak proto, že magnituda je vždy kladná (z definice). Matematicky je to ook, ale interpretovat to někdy může být obtížné. 6. Rychlohops ve fázi mezi π a π protože fáze pro π a π je stejná, zaokrouhlovací chyby mohou způsobit hopsání fáze, viz. obr.
Inverzní DFT (reálná) Mám hotovou dopřednou DFT. Jak se dostanu zpět na původní signál? Kde Ale (!) Proč??? (další stránka) N/2 N/2 [ ] = [ ] cos( 2 π / ) + [ ] sin( 2 π / ) x j ReX k kj N ImX k kj N k= k= [ ] ReX k ReX [ k] = N /2 ImX k ImX [ k] = N ReX ReX N [ ] [ /2] [ ] /2 [ ] ReX = N ReX N /2 = N [ ] Cvičení: Naprogramujte inverzní DFT. Vyzkoušejte dopřednou a následně zpětnou transformaci.
Proč musíme čarovat s prvním a posledním koeficientem? Vše je jasné z obrázku. Šířka pásma pro jednotlivé vzorky není stejná. Co to vůbec je šířka pásma? Jaký rozsah frekvencí pokrývá náš jediný vzorek.
Jak se to dělá v Matlabu? Pozor na rozdíl mezi reálnou DFT (to co klovete) a komplexní DFT (Matlab). clear all % generování dat t = :.:.99; % tedy vzorkujeme s periodou. sec, (Hz) % vyrobim si dilci signaly o frekvencich 4 a 9 Hz y = 2*sin(t*4*2*pi); y2 = 4 * sin(t*9*2*pi); y = y + y2; % sectu je a mam dve namixovane sinusovky Y = fft(y); % provedu FFT % spoctu si magnitudu a fazi - prevedu do polarniho zobrazeni magnituda = abs(y); faze = phase(y); % ted to vsechno nakreslime subplot(3,,); plot(t,y); ylabel('amplituda'); xlabel('cas [sec]'); title('puvodni signal v casove oblasti'); subplot(3,,2); plot(magnituda); ylabel('amplituda'); xlabel('vzorek [-]'); title('signal ve frekvencni oblasti'); subplot(3,,3); % vezmeme jen pulku frekvenci! pulmagnituda = magnituda(:length(magnituda)/2); % na x osu vyrobime data od do pulky vzorkovacky f = linspace(,5,length(pulmagnituda)); plot(f,pulmagnituda); ylabel('amplituda'); xlabel('frekvence [Hz]'); title('signal ve frekvencni oblasti');