FFT =0.. 1! 1 %=0.. 1! 2. Legyen az ú.n. egységgyök a következő definícióval megadva: &# = 3

Hasonló dokumentumok
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Amortizációs költségelemzés

A C programozási nyelv III. Pointerek és tömbök.

Sugárszivattyú H 1. h 3. sugárszivattyú. Q 3 h 2. A sugárszivattyú hatásfoka a hasznos és a bevezetett hidraulikai teljesítmény hányadosa..

A C programozási nyelv III. Pointerek és tömbök.

Adatbázis rendszerek Gy: Algoritmusok C-ben

A félév során előkerülő témakörök

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Készítette: Nagy Tibor István

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

8. gyakorlat Pointerek, dinamikus memóriakezelés

C programozási nyelv Pointerek, tömbök, pointer aritmetika

illetve, mivel előjelét a elnyeli, a szinuszból pedig kiemelhető: = " 3. = + " 2 = " 2 % &' + +

15. A VERSENYRENDEZÉS

Fehérzajhoz a konstans érték kell - megoldás a digitális szűrő Összegezési súlyok sin x/x szerint (ez akár analóg is lehet!!!)

INFORMATIKA javítókulcs 2016

Fourier transzformáció

Ortogonalizáció. Wettl Ferenc Wettl Ferenc Ortogonalizáció / 41

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

Wavelet transzformáció

Shift regiszter + XOR kapu: 2 n állapot

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Programozási módszertan. Mohó algoritmusok

2. Fejezet : Számrendszerek

Rendezések. Összehasonlító rendezések

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

Felületi jelenségek + N F N. F g

Kinematika február 12.

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

AERMEC hőszivattyú az előremutató fűtési alternatíva

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

14. Mediánok és rendezett minták

A hullámsebesség számítása különféle esetekben. Hullám, fázissebesség, csoportsebesség. Egy H 0 amplitúdójú, haladó hullám leírható a

.Net adatstruktúrák. Készítette: Major Péter

2018, Diszkrét matematika

Algoritmuselmélet 2. előadás

Statisztika - bevezetés Méréselmélet PE MIK MI_BSc VI_BSc 1

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

11. Orthogonal Frequency Division Multiplexing ( OFDM)

5. Előadás. (5. előadás) Mátrixegyenlet, Mátrix inverze március 6. 1 / 39

Maximum kiválasztás tömbben

Gyakori elemhalmazok kinyerése

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Java II. I A Java programozási nyelv alapelemei

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

O k t a t á si Hivatal

BALÁZS HORVÁTH BEAN. ütőhangszerekre, egy játékosra. Palotás Gábornak. Ócsa, 2015

A gyors Fourier-transzformáció (FFT)

Hajnal Péter. Bolyai Intézet, TTIK, SZTE, Szeged április 8.

Acta Acad. Paed. Agriensis, Sectio Mathematicae 29 (2002) PARTÍCIÓK PÁRATLAN SZÁMOKKAL. Orosz Gyuláné (Eger, Hungary)

KOMBINATORIKA ELŐADÁS osztatlan matematika tanár hallgatók számára. Szita formula

Informatika terméktervezőknek

Fourier térbeli analízis, inverz probléma. Orvosi képdiagnosztika 5-7. ea ősz

3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}

Segédlet az Informatika alapjai I. című tárgy számrendszerek fejezetéhez

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Aritmetikai utasítások I.

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

Érdemes egy n*n-es táblázatban (sorok-lányok, oszlopok-fiúk) ábrázolni a két színnel, mely éleket húztuk be (pirossal, kékkel)

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

AZ ELSÔ SZÁMJEGYEK BENFORD-TÖRVÉNYE ÉS A RADIOAKTÍV IZOTÓPOK FELEZÉSI IDEJE

MINTA Mérési segédlet Porleválasztás ciklonban - BME-ÁRAMLÁSTAN TANSZÉK. PORLEVÁLASZTÁS CIKLONBAN Ciklon áramlási ellenállásának meghatározása

Gibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Java programozási nyelv

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Számjegyes vagy radix rendezés

Java II. I A Java programozási nyelv alapelemei

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Számítógéppel vezérelt projektor szimulációja asztali képmegjelenítőn

Elektronikus műszerek Spektrum analizátorok

Alhálózatok létrehozása

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Véletlen bolyongás. Márkus László március 17. Márkus László Véletlen bolyongás március / 31

Dinamikus programozás - Szerelőszalag ütemezése

Programozás alapjai II. (7. ea) C++

Algoritmizálás + kódolás C++ nyelven és Pascalban

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Struktúra nélküli adatszerkezetek

Algoritmusok és adatszerkezetek I. 1. előadás

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

44. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY. Megyei forduló április 11.

Kupac adatszerkezet. 1. ábra.

Számláló rendezés. Példa

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Felvételi tematika INFORMATIKA

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

1. ábra ábra

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

OOP #14 (referencia-elv)

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

22. GRÁFOK ÁBRÁZOLÁSA

Átírás:

FFT. oldal A DFT alkalmas valamely időüő jel Fourier transzormáltjának előállítására és íy a spektrum elvételére is. Futási ideje azonban o(n ) ami ien korlátozottá teszi használatát - a spektrum uyanis annál pontosabb, minél több mérési pontból indulunk ki. Emiatt nem ritka a több ezer adatot tartalmazó minták elemzése, sőt, ha (a ehérzajok hatásait) a spektrum átlaolásával szeretnénk javítani, yakran több száz, esetle ezernél is több ilyen mintát kell kielemezni. Ey - ezres minta esetén, spektrumból való átlaolás DFT-nél közelítőle nel összemérhető műveletet jelent. Ez mé a modern asztali számítóépeknél is hosszú, akár több tíz perci is eltartó műveletet jelent. Szerencsére bizonyos eltételek mellett ey N-elemű tömb DFT-je visszavezethető két N/ elemszámú tömb DFT-jére és ez a résztömbökre is iaz lesz. A olyamatos visszavezetetés eészen addi vihető, amí már csak eyelemű tömbök DFT-jét kell vérehajtani. A lépésről lépésre való kettéosztoatásból adódik, hoy az elemszám ekkor csak kettő valamely hatványa lehet (,,8,,,...). Az íy számított speciális DFT-t nevezik FFT-nek (Fast Fourier Transormation (-radix FFT)). Számítási ideje az oszd me és uralkodj elépítés révén jóval kisebb, o(n*lo(n)). Az előző példára vetítve ez * műveletet jelent csak, ami nayjából -szoros sebessénövekedést jelent, a hayományos DFT-hez képest. Elsőként belátjuk, hoy a DFT valóban visszavezethető két meelelő elépítésű résztömb eldolozására, ey példán keresztül pedi metekintjük az aloritmus működését. A DFT átalakítási szabályai diszkrét esetben:..! " # $ $ %..! Leyen az ú.n. eyséyök a következő deinícióval meadva: &# Nézzük me, milyen tulajdonsáokkal rendelkezik és hoyan jeleníthető me ez a jelölésben is. (A továbbiakban a nn/ a minta elemszámának elét jelenti.) ' ( ( ) * +,- /!+-% /!" ' ( ( ) * ) * ' ( ' ( ) * +,- /!+-% /! " ' ( ) * 8 9 '

Ezzel a DFT kiejezése a következő alakba írható:. oldal &# ;h, > Most belátjuk, hoy a DFT valóban visszavezethető két kisebb tömb DFT-jére. Ehhez az összeet páros és páratlan k-hatványok szempontjából vizsáljuk me. 8 Első eset Th.: Nn km Ekkor: - tehát a tömb két, eleakkora, uyanakkora elemszámú résztömbre bontható - a k-hatványok közül csak a párosakat vesszük iyelembe A szumma két élre bontásával:! #? &# 9! &# A > &#! + &#!! B A > &# + &#! B > &# + &#! H I CDDEDDF > +! &# " J K ' K? KL A kapott összeüés jól láthatóan a l elemekre vonatkozó DFT, ami a páros indexekhez tartozó transzormált elemeket (N/ db) állítja elő. Leyen ey N-hosszú tömb. A l elemek deiníciója: Mivel nn/, a deiníció a tömb első elét tölti el. M > > +,........ n-... n- n n+..... n- Második eset Th.: Nn - N-ről most is azt eltételezzük, hoy páros km+ - a k-hatványok közül csak a páratlanokat vesszük iyelembe Ekkor:! #?" &# > &# &#! > &# &#

Itt is szétválasztva a szummát két élre: > &# &# A > &# &# + &# &#! B P O > &# &# + &# &# H TUI R CDDDDDEDDDDDF >! &# S &# " I &# P &# Q J K ' K? KL. oldal A kapott összeüés a n+l elemekre vonatkozó DFT, ami a páratlan indexekhez tartozó transzormált elemeket (ismét N/ db) állítja elő. A indexében található n+l lényee, hoy az előző tömb másik elét szeretnénk elhasználni tárolásra, ezáltal eyajta helyben rendezést előállítani a következő iterációhoz. A l+n elemek deiníciója: ami íy a tömb második elét tölti el: M >! &#,........ n- n n+...... n-... n- n n+..... n- A szeparáló műveletet aztán ezekre a résztömbökre ismét mehívjuk, mínem már csak ey elemű tömbök maradnak. A sok cseréletés miatt azonban az eyes transzormált értékek sorrendje is összekeveredik, ezt a véén mé ey úynevezett bittükröző operátor seítséével rendezni kell. Leyenek az utoljára kapott -tömb elemei # -vel, a transzormáltakat helyes sorrendben tartalmazó képzeletbeli tömb elemei pedi -val jelölve. Ekkor a két tömb elemei közötti kapcsolatot az ún. bittükröző operátor ( V ) biztosítja: # V ahol V a k-index bináris alakját (bitjeinek sorrendjét) tükrözi ( Pl. V RL"L""SR""L"LS ). Fontos, hoy implementáláskor nem az eész tárolási osztályra vonatkozik a tükrözés! Az int tárolási osztály pl. általában bájton, azaz biten tárolódik. Fontos, hoy a csak annyi alsó bit tükrözésére van szüksé, amennyi N tárolásához szüksées: Tükrözendő alsó bitek száma,m!

. oldal A következő példában ey 8 elemű tömb FFT lépéseit ojuk paraméteresen véikísérni. A kékkel jelölt -mezők a páros, a pirossal jelöltek a páratlan indexekre vonatkozó szabályokkal vannak képezve az előző tömb meelelő darabjaiból. + + + + + + ( ) W ( ) ( + ) W + ( ) ( ) ( ) ( ) ( ) W + + W ( + ) ( ) W ( ) ( + ) W ( ) ( ) W ( ) W N8 N 8 n W 8 e π 8 N n π ( j) W e N n π ( ) W e Ahol N az adott művelethez tartozó orrástömb mérete, n a keletkező két résztömb mérete, WN -az adott szinten használandó eyséyök (melynek hatványaival kell bizonyos lépésekben a piros mezők enerálásakor - szorozni). Az eredménytömb indexei azonban már nem eleltethetők me az eredeti indexek helyeinek az FFT speciális ún. pillanó struktúrája miatt. Nézzük me, hoy az eredeti indexeknek meelelő helyek hová keveredtek! Az alábbi ábrán a páros és páratlan indexekre vonatkozó lépésenkénti szétváloatás ((),()) hatásait követhetjük nyomon (az eyes oszlopokban az eredeti tömbindexek láthatóak, mí az oszlopok mellett az aktuális résztömbökre vonatkozó indexelés látható, amely szerint a következő lépés résztömbjeinek enerációja történik):

. oldal Fiyeljük me, hoy bizonyos indexek (kiemelve) véül a saját helyükön maradnak! Érdekes módon ezek éppen olyan indexek, melyek bináris alakja a bitek elhelyezkedésére nézve szimmetrikus. Példánkban N8, ez biten ábrázolható. Írjuk el az összes előorduló indexet ilyen bites bináris számként: Index Bináris alak (biten) Bináris alak A tükrözött alaknak tükrözve (a bitet) meelelő számérték A táblázat és a változások entebbi nyomon követése alapján ey nayon ontos észrevétel tehető: a kiindulási helyek indexük tükrözött bináris meelelőjének helyére kerülnek. Ezt iyelembe véve a transzormált tömb elemeinek helyes sorrendjét is könnyen visszakaphatjuk: amenynyiben az elem indexe nem eyezik me bittükrözött meelelőjével, az ezeknek meelelő elemeket elcseréljük (ezt elé csak N/-i metenni, mert a továbbiakban a már kicserélt elemeket cserélnénk újra vissza!). Mindezek alapján ey eyszerű mevalósítása az FFT-nek a következő rekurzív pszeudokód: void FFT(Cx*, int startind, int N, bool elso) // ejléc int nn/, i; Cx p, m, W, WN; // inicializálás, a Cx típusú osztály az alapműveletekre zárt WN.Recos(-PI/N); WN.Imsin(-PI/N); WWN; // az értékadást is implementálja i(n<) return; // kilépési eltétel a rekurzív híváshoz else i (elso) or(istartind; i<n; i++) [i][i]/n; // /N előállítása minden tömbelemre or(istartind; i<startind+n; i++) // indexelés: az aktuális tömbdarabban kell dolozni i (i>) WW*WN; // menetközben leyártódnak a hatványok (*) elvárt p[i]+[i+n]; // páros kiválasztási szabály (pluszos) m([i]-[i+n])*w; // páratlan kiválasztási szabály (mínuszos) [i]p; [i+n]m; // tömbelemek utólaos értékadása } FFT(, startind, N/, alse); // rekurzív hívás az új tömb első elére FFT(, startind+n/, N/, alse); // rekurzív hívás az új tömb második elére i (elso) // ha minden visszatért a leelső üvénybe // akkor rendbe rakjuk az indexeket or (i; i<n/; i++) i (i!bittukroz(i)) Cserel(,i,BitTukroz(i)); } // BitTukroz() csak az indexet tényleesen leíró bináris } // számot tükrözi, nem az eész tárolási típust! } // A tároló bitek száma: lo(n) } Mehívása: FFT(,, N, true); Ahol a BitTukroz() az adott index bittükrözött értékével tér vissza, a Cserel() pedi az arumentumban meadott indexű értékeket cseréli ki az komplex tömbben. Az inverz FFT-re az elmondottak uyanúy iazak maradnak, mindössze a kezdeti tömb N-nel való normálása marad el, az eyséyök helyett pedi annak komplex konjuáltja veendő (()-() szerint).