

OT: Potřeboval bych pochopit Fourierovu transformaci, ale potřebuju nakopnout
Ahoj,
dělám zesilovač a jako jednu z komponent bych tam rád dal spektrální analyzátor (čip tam bude PIC16F887 @ 24Mhz, vývojové prostředí mikroC PRO). Strávil jsem pár hodin hledáním na Googlu, jaký algoritmus/teorie by pro mě byly vhodné a našel jsem Fourierovu transformaci, konkrétně rychlou Fourierovu transformaci (FFT). Našel jsem tenhle zdroj i s příklady, ale pořád to 100% nechápu (nechci to jen jednoduše zkopírovat, ale napsat si to sám):
http://www.codeproject.com/KB/recipes/howtofft.asp x
Teď popíšu, jak to chápu:
Musíme mít analogový signál - ten převedeme do vzorků
Píše se tam, že vstupní pole musí být z komplexních čísel - reálná složka čas a imaginární "napětí"? Nebo naopak?
kde počet těchto vzorků musí být mocnina dvou.
2. Otočit u první půlky reálnou a imaginární část??
3. A tady už to pomalu přestávám chápat, jak přichází na řadu ten Danielson-Lanzcos
Dokázal by mě nějaký dobrák nakopnout a přeložit "do lidštiny", co píší v tom odkazu? Byl bych neskonale vděčný. Můj mat. aparát končí asi někde u konce třetího ročníku SŠ (cca. základy integrálů a derivací), proto bych byl rád, kdybyste se snažili vysvětlit mi to polopatě .
Díky moc za všechny odpovědi.
metod je vice, zkus se podivat na toto, snad to lepe pochopis...
http://elektronika.kvalitne.cz/ATMEL/necoteorie/tr ansformation/AVRFFT/AVRFFT.html
Tak je mi to zase o trochu jasnější
Takže u Cooley-Tukey algoritmu je jako první krok třeba udělat bitovou inverzi vstupního pole a poté to "motýlkové" zpřeházení viz obrázek?
![[http://elektronika.kvalitne.cz/ATMEL/necoteorie/tr ansformation/AVRFFT/obr/butterfly_DITFFTR21.png]](http://elektronika.kvalitne.cz/ATMEL/necoteorie/transformation/AVRFFT/obr/butterfly_DITFFTR21.png)
Když budu mít tedy 64 (256) vzorků, tak bude třeba tohle provést 6 resp. 8 zpřeházení (vždy N, kde 2^N = počet vzorků)?
A potom se tam píše, že je třeba provést vlastní FFT. A tam už mi to není jasné, pokoušel jsem si přepsat ten algoritmus do mat. výrazů, ale bez úspěchu. Konkrétně se mi jedná o tenhle kód:
Hele já se Tě jenom trošku zeptám... K čemu je dobrá ta Furiérova transformace ( jestli to jde nějak vysvětlit ).
Chci si postavit spektrální analyzátor - watch
A nechci tam cpát 10-30 analogových filtrů, PIC stejnak nemá ani tolik analogových vstupů. Takhle mi to spočítá, jaké všechny frekvence vzorek hudby obsahuje a dá se s tím krásně pracovat. Taky to využiju do dig. osciloskopu a spekt. analyzátoru s PICama.
Jinak význam té fourierovy transformace spočívá v tom, že ty máš nějakej signál:
![[http://ac3filter.net/files/docs/ac3filter_1_30b/pi c_loudness/a_signal.png]](http://ac3filter.net/files/docs/ac3filter_1_30b/pic_loudness/a_signal.png)
![[spec50.jpg]](http://www.nitehawk.com/rasmit/spec50.jpg)
Třeba po 100 mikrosekundách si zapíšeš hodnoty - třeba 0,7V;1,2V,1,1V,0,2V atd. To proženeš fourierem a vyhodí ti to komplexní čísla - ve výsledku pak dostaneš informace o tom, jaké tam jsou frekvence (třeba 200Hz, 1100Hz, 2200Hz) a jejich amplituda ("síla") a z toho vytvoříš takovýto podobný graf:
Toto konkrétně vypadá na spektrum obdélníkového signálu.
Když jsem někde napsal blbost, tak mě opravte, taky v tom nejsem zběhlej
.
U toho youtube odkazu ma odkaz na postup - je tem i nekompilovaný kód na Atmega8 http://diy.elektroda.eu/analizator-widma-akustyczn ego/. Třeba tam něco najdeš, je to polsky - a já tam nic jako FFt nenašel.
Uf, tak jsem na konci. Nepotřeboval jsem fourierovu transformaci, stačil mi Goertzelův algoritmus:
Goertzel_algorithm
Díky všem za pomoc.
Alespon sis rozsiril obzory.