Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Ahoj,
rád bych zjistil výšku tónu (V herzích) signálu vstupující o do mikrofonu, k tomu abych to zjistil jsem se docetl, ze je pry treba provest FFT ( Fast Fourier Transformation ) - rychlou fourierovu transformaci, tu by zvládli spočítat i nějaké matematické knihovny ,jenže za podmínky, že zadám nějaké vstupní hodnoty.
Mohl byste mi někdo prosím vysvětlit co je to FFT a jaké vstupní hodnoty potřebuji zjistit pro zjištění aktuální frekvence signálu ( rozuměj jak rychle zrovna křivka signálu kmitá ) .
Díky,Ondra
Offline
Mno - kde začít? Nejspíš tím, že "to není tak jednoduché".
Teorie ve zkratce:
Každý signál lze složit sečtením z nekonečného množství harmonických funkcí. Harmonická funkce = sinus nebo kosinus. Při FFT jsou to kosiny, ale to je z hlediska pouhého rozhledu celkem jedno. Ty jednotlivé fce se popíšou třemi parametry: frekvence (rychlost), amplituda (velikost) a fáze (posunutí - začátek všech harm. fcí není vždy přesně v nule, kde tedy je).
Když vezmeš signál tak jak jej zachytíš mikrofonem do počítače, postupně se objevují nějaké čísla. Informace o tom, kdy jsou, je vlastně daná jejich pořadím (znáš celkovou délku, jak často se zaznamenává atd., dá se to dopočítat). Velikost signálu v těchto okamžicích jsou ty čísla. OK. Tohle snad chápe každý.
Když si představíš vyjádření signálu jako součtu harm. fcí, je to podobné: informace o frekvenci té které složky je zase daná pozicí/pořadím, a čísla vyjadřují amplitudu té které složky, jak moc přispívá k výsledku. Ještě je tu ale navíc ta nešťastná fáze, která tu amplitudu ještě komplexně pootočí.
Popis signálu tímto způsobem se jmenuje spektrum.
To že každá složka/hrm.fce je vyjádřena jednou hodnotou, znamená, že to co si nakreslíš jako sinusovku, se ti ve spektru ukáže jako jeden bod. Když vezmeš dva síny o různých frekvencích a sečteš, máš nějaký maglajz (např. http://cs.wikipedia.org/wiki/Soubor:Zazneje.png ), ale ve spektru se zase rozloupnou na dva body o výškách odpovídajících jejich původním velikostem. Atd.
Skutečný signál jaký se dá zaznamenat obsahuje takovýchto složek strašně moc, takže ve spektru vznikne spíš nějaký "graf".
Je tu ještě jeden háček - spektrum neříká nic o tom kdy. Platí pro celý průběh který nacpeš do FFT.
A teď k technickému provedení.
FFT dává komplexní čísla, pokud tedy chceš mít nějaké rozumné data pro lidskou hlavu, to co vypadne z FFT si rozlož na absolutní hodnotu (amplituda) a úhel (fáze).
Z různých důvod, které mohou bohatě objasnit kolegové zběhlí v matematice, je spektrum zrcadlově stejné. Na to pozor...
Používáš digitáůní záznam, platí vzorkovací teorém - nejvyšší "správná" frekvence je polovina vzorkovací. Pokud je záznam například v 44.1 kHz, uprostřed spektra je 22.05 kHz a dál už je něco co Ti k ničemu nepomůže - ta symetrická druhá strana.
Jelikož chceš něco zjistit jenom o malém kousku záznamu (z jednoho či pár bodů opravdu o frekvenci nic jistit nejde), nejdřív si vyřízni ten kousíček a pak s ním pracuj dále. Stačí třeba i 10 ms, i když čím víc, tím líp.
Matematika opět útočí - FFT kromě jiného "vidí" vstupní signál jako zamotaný dokola, konec navazuje na začátek. To může udělat docela paseku, pokud tam budou různé hodnoty (ostrá hrana se skládá z velkého množství složek!), takže na začátku a na konci je vhodný nějaký "fade" až k nule. Říká se tomu okénko.
Když to shrnu:
1) vyříznout kousek kolem zkoumaného místa
2) "otupit" konce
3) FFT
4) brát absolutní hodnotu (amplituda)
5) graf
6) použít mozek... největší vrchol je nejsilnější složka, pokud je jich víc podobných, není tam jenom "jedna frekvence"
Podotýkám, že třeba obdélník je z tohoto hlediska velké množství harm. fcí, takže některé intuitivní představy o frekvenci jako počtu průchodů nulou s tímhle naprosto nesouvisí! Potom je lepší prostě koukat na průběh, odměřit vzdálenosti a zprůměrovat.
Offline
↑ VS:
a aky sposobom vypocitam jednotlve cleny X1, X2 .... Xn
skusal som to ale dajako mi to nevychadzalo, mozete mi vysvetlit tento vzorec, teda ak je spravny. Alebo poslat postup ako to pocitat dakujem. Na nete som sa dopocil o Cooleyov-Tookeyov algoritme, mozete mi aj to nejako vysvetlit ? dakujem
Offline
Stránky: 1