Fourier transzformáció
Egy időben változó jel előállítható különböző freknvenciájú, fázisú és amplitúdójú jelek összegeként. A Fourier-transzformáció az a művelet, amely egy adott jelhez megadja ezt a felbontást. A Fourier-transzformáció inverze szolgál arra, hogy a frekvencia spektrumból (frekvenciatartomány) megadja az időfüggő jelet (időtartomány).
A Fourier-transzformáció ismerete alapvető fontosságú a lineáris rendszerek tulajdonságainak vizsgálatához. Mivel az áramkörök jelentős része frekvenciafüggő jelleget mutat, ezért a frekvenciatartománybeli viselkedés sokszor könnyebben leírható, mint az időtartománybeli.
Tartalomjegyzék |
A Fourier-transzformáció felhasználása
Egy fontos alkalmazás különféle transzformációk elvégezése a jelen.
Például: egy négyszögjelből lehet-e kis torzítású színuszjelet csinálni?
Igen. A négyszögjel Fourier-sora

A fenti Fourier sorból és a mellékelt ábrából látható, amennyiben beépítünk a jelútba egy olyan aluláteresztő szűrőt, amely a négyszögjel alapfrekvenciájának 3-szorosát már nem engedi át, akkor színuszjelet kapunk.
További érdekes alkalmazása a szűrések és kiemelések. Azaz például egy hangfrekvenciás jelből egy sípolást el szeretnénk nyomni, vagy pedig egy bizonyos frekvenciatartományt fel szeretnénk hangosítani.
Rádiófrekvenciás jel esetén a Fourier transzformáció legfontosabb alkalmazása az OFDM jel demodulálása során kerül előtérbe, ahol a sok vivőfrekvenciát nem sok digitális szűrővel választjuk szét, hanem egyetlen Fourier transzformációval.
Folytonos Fourier transzformáció
Egy jel Fourier transzformáltja az a jel, amin ha elvégezzük az alább látható inverz-Fourier transzformációt, visszakapjuk a jelet:
Tehát a Fourier transzformáció:
Ha már ilyen szép integráloknál tartunk, fontos megemliteni, hogy ez csak akkor végezhető el, ha a jel abszolút vagy négyzetesen integrálható. Tehát véges az energiatartalma. Megjegyzés: nem véges energiatartalmú jeleknek is létezhet Fourier transzformáltja, de azt nem ezzel az integrállal kell előállitani.
A fenti összefüggésnél a
, az
az amplitudóspektrum, az arc(F(jω)) pedig a fázisspektrum.
A Fourier transzformált előállitására egy kellemesebb módszer azt egy táblázatból kikeresni. Ebben az angol nyelvű wikipedia egy cikke nagyon hasznos segitségnek bizonyult. Ugyanitt vannak táblázatba foglalva a Fourier transzformáció azonosságai.
DFT
Diszkrét Fourier Transzformáció: az előző részben ismertetett folytonos Fourier transzformáció szép, azonban a gyakorlatban, mivel diszkrét idejű jelekkel dolgozunk, a transzformációt is ennek megfelelően egyszerűsítjük. Az alábbi összefüggéssel tehát az elemi színuszos komponensek számíthatóak ki.
- ahol
- N: a minta adatblokkjának elemszáma, amire a DFT-t el kívánjuk végezni.
- k az egyik alkotó frekvenciával arányos konstans. Frekvenciában kifejezve: k = N * frekvencia/mintavételi_sebesség
- e-j valami - rádióamatőrök között kevésbé közismert matematikai kifejezés a cos(valami) - j*sin(valami) kifejezésére, amely a komplex számok témaköre.
- 2π pedig azért szerepel itt, hiszen 2π radián egy teljes kör.
A spektrális felbontás számhalmazából a jelet visszaállíthatjuk az egyes színuszos oszcillátorok jeleinek összegeként:
FFT
A gyors Fourier transzformáció (Fast Fourier Transform) eredménye egyezik a fenti DFT eredményével, azonban a művelethez szükséges számítási teljesítmény igénye sokkal kisebb. Azaz:
- DFT esetén a számítás lépésszáma: N2 * (tmul + tadd)
- FFT esetén ugyanez a számítás N*log2(N) * (tmul/2 + tadd) lépésszámból teljesíthető.
ami például egy 1024 pontos transzformációnál nagyságrendileg század akkora processzorteljesítmény felhasználását teszi szükségessé.
Az FFT egyetlen korlátja, hogy a pontszám nem lehet tetszőleges, például nem lehet 1000 pontos, csak 2 valamely hatványa lehet RADIX-2 FFT esetén, illetve 3 valamely hatványa RADIX-3 FFT esetén. Azonban az említett sebességnövekedés miatt ezt a kompromisszumot elfogadjuk.
Kiegészítés: 1536 pontos FFT-t alkalmaznak az új mobiltelefon-rendszernél (3GPP LTE), ahol RADIX-3 trükkjével 3 darab 512 pontos FFT-re bontják a blokkot és ezeket dolgozzák fel RADIX-2 FFT-vel. Másik érdekesség, hogy további optimalizálhatóság miatt a RADIX-4 FFT is elterjedt, ahol csak 4 valamelyik hatványa lehet a feldolgozható blokk mérete.
Amennyiben csak kevés spektrumvonalra kell szétbontani, akkor a fennt említett DFT algoritmus sem rossz választás. Ilyen, kevés spektrumvonalat igénylő felbontás a DTMF, ahol mindössze 8 spektrumvonal érdekel bennünket, illetve az AFSK, ahol pedig csak kettő frekvencia energia-aránya érdekel bennünket.
FFT megvalósítása
FFT-t többféleképpen csinálhatunk. Vagy letöltjük a http://www.fftw.org -ról az FFT függvénykönyvtárat, vagy saját magunk írunk meg egy hatékony FFT algoritmust. Python programnyelv esetén pedig a python-numpy csomag segíthet.
Az alábbiakban egy igen egyszerűen felhasználható FFT számító példa kerül ismertetésre. Ez a közvetlen felhasználhatóságán túl alkalmas arra is, hogy egy saját magunk által például mikrovezérlőre megírt FFT-algoritmus hibátlanságát ellenőrizzünk.
#!/usr/bin/python # -*- coding: utf8 -*- import numpy def negyszogjel_generator(mintaszam): m=[] for i in range(mintaszam/2): m.append(1.0) for i in range(mintaszam/2): m.append(-1.0) return m def spektrum_szamitas(minta): f=numpy.fft.ifft(minta) return f def idobeli_jelre_vissza(f): v=numpy.fft.fft(f) return v def kepernyore_ir(mit, szoveg): print "=== %s ==="%(szoveg) i=0 for s in mit: print "%4d. elem: "%(i), s i+=1 print if __name__ == "__main__": # külső A/D átalakítás helyett itt a példában gyártunk fiktív mintát minta=negyszogjel_generator(64) kepernyore_ir(minta, "negyszogjel") f=spektrum_szamitas(minta) kepernyore_ir(f, "Spektrumbeli harmonikusok ( x*cos(wt)+y*sin(wt) ) ") v=idobeli_jelre_vissza(f) kepernyore_ir(v, "Ismet az idobeli jel - spektrumbol visszaszamitva")
Egyéb, nem szinuszos komponensekkel végzett spektrális felbontások
- Wavelet transzformáció - alapja nem a sin() és cos(), hanem az elemi négyszögjel.