Matematika

Scilab FFT HOWTO

Scilab FFT HOWTO
Scilab je skvělý nástroj pro mnoho použití ve vědecké i inženýrské práci. Tento článek se bude věnovat speciálnímu případu FFT, Fast Fourier Transform.

Nejprve si ujasněme, co je Fourierova transformace rychlá a proč ji chcete použít. Matematika je především o frekvencích. Fourierova transformace je metoda k vyčlenění menších vln ve složité vlně. To znělo komplexně; když posloucháte hudbu, uslyšíte mnoho různých tónů od zpěváka, nástrojů atd. Jako lidé můžeme často slyšet kytaru samostatně, ale pokuste se ji oddělit pomocí technologie v záznamu a narazíte na potíže. Moderní technologie to dokáže díky různým ztělesněním základních Fourierových rovnic, které byly vyvinuty v průběhu let. Moderní využití Fourierovy řady je komprese obrazu a videa, skenování GPS a MRI. To vše přibližuje zdroj a používá Fourierovu řadu k uložení paměti a získání rychlejších výsledků.

Matematik Jean-Baptiste Joseph Fourier se ve skutečnosti pokoušel vyřešit rovnici tepla, aby bylo možné vypočítat, jak se teplo šíří v pevné hmotě. To, s čím přišel, bylo mnohem užitečnější než to, i když jeho metody byly později vylepšeny do formálnější verze. Rovnice se nyní používají v široké škále oborů.

K vyčlenění konkrétní frekvence ve složitém signálu můžete použít některé výpočty, rychlé Fourierovy transformace. Matematický základ vyžaduje určitou praxi. Khan Academy je příjemné místo pro výuku matematiky.

Pokud potřebujete analyzovat jakékoli vlny, můžete pomocí sinusových funkcí aproximovat celkovou vlnu a získat všechny samostatné signály ze smíšené vlny. Nebo naopak, můžete vytvořit složitou vlnu z několika sinusových vln. Toto je základní myšlenka za matematikou.

Abychom vašim Fourierovým transformacím lépe porozuměli, je dobrým příkladem je napsat je sami. Ve Scilabu máte jednoduchý programovací jazyk navržený s důrazem na matematiku.
Různé úkoly, které budete potřebovat, Fourierovy transformace začínají hledáním koeficientů transformace. Důvodem je to, že právě toto se používá pro kompresi obrázků a mnoho dalších procesů.

Když se naučíte základy série, první věcí, která se používá, jsou koeficienty. Rovnice jsou následující:

Kód pro jejich řešení je poměrně jednoduchý, začíná funkcí. Tato funkce implementuje Fourierovu transformaci na malé kousky.
K definování funkce použijete zřejmý konstrukt „funkce“. Níže je Fourierova řada pro obdélníkovou vlnu:

funkce y =F(z)
y = 4 * sin (t) / 1 *% pi + 4 * sin (3 * t) / 3 *% pi + 4 * sin (5 * t) / 5 *% pi + 4 * sin (7 * t) / 7 *% pi
+ 4 * hřích (9 * t) / 9 *% pi
koncová funkce

Aby byla vlna ještě více čtvercová, je to koneckonců aproximace, musíte neustále zvyšovat počet termínů. Když hledáte znovu vytvořit vzor, ​​řekněme karikaturu, použijete Fourierovu transformaci velmi podobným způsobem. Musíte jen považovat období za nekonečné.

Jednoduché právo? Ne, bez základních matematických znalostí. Vyzkoušejte sami několik příkladů pomocí scilabu.

Tento příklad ukazuje nejjednodušší možnou kombinaci signálů; dva signály různé frekvence.

// Vyberte velikost vzorku
 
N = 100;
 
// Nastaví sekvenci, tím se vytvoří pole
 
n = 0: N-1;
 
// Vytvořte frekvenci signálů
 
w1 =% pi / 4
 
w2 =% pi / 8
 
// Proveďte vzorkované signály
 
s1 = cos (w1 * n); // První složka signálu
 
s2 = cos (w2 * n); // Druhá složka signálu
 
// Spojte dva do jednoho signálu
// V tomto případě vydáme jednoduchý čistý signál.
 
f = s1 + s2;
 
// Zde je výsledný signál připraven k transformaci.
 
číslo (0);
děj (f);
 
// Fourierova transformace tohoto signálu by měla zobrazit pouze frekvenci komponent.
 
F = fft (f);
 
F_abs = abs (F);
 
Obrázek 1);
plot (n, F_abs);
 
obrázek (2);
graf (F);

Výše uvedený příklad použijte k procvičení fungování transformace. Nezapomeňte jej změnit tak, aby filtroval různými způsoby.

Tip je použít konzolu Scilab, abyste zjistili, co proměnné obsahují v každém kroku programu, tímto způsobem také můžete vidět, že 'F' má imaginární obsah. Zkuste změnit äfä jiným způsobem, abyste získali správnější výsledek.

V průmyslu je nejběžnější použití Fourierových transformací pro analýzu signálu. Chcete-li odfiltrovat frekvence z hlučného signálu, musíte začít s vytvářením nebo importováním signálu.  Následující fragment kódu vytvoří smíšený signál dvou frekvencí, 50 a 70 Hz. V kódu také vidíte použití 'grand', toto je volání scilabů na random. Tyto náhodné hodnoty jsou přidány, aby byl signál o něco více hlučný, blíže realitě.

sample_rate = 1000;
t = 0: 1 / sample_rate: 0.6;
N = velikost (t, '*'); // počet vzorků
s = sin (2 *% pi * 50 * t) + sin (2 *% pi * 70 * t +% pi / 4) + grand (1, N, 'nor', 0,1);
Nyní můžete vykreslit 's' jako funkci 't' a vidět, že graf vypadá chaoticky.
>> plot (t, s);

Tady je čas vyzkoušet nejjednodušší ze Fourierových transformací, udělat z y Fourierovu transformaci s.

y = fft (y);

fft

Pokud vykreslíte „y“ jako funkci „t“, získáte poněkud symetrický vzor v rozmezí od 0 do 0.6. Tyto dva hroty jsou to, co hledáme, ale nyní je vidíme v časové oblasti. Skutečně se stalo, že výsledek stále obsahoval imaginární hodnoty. Abychom našli dvě frekvence ve frekvenční doméně, potřebujeme další operace, abychom našli pouze reálná čísla. A pak vezmete absolutní hodnotu výsledků. Graf jasně ukazuje na původní frekvence.

Zde je kód:

// s je reálné, takže reakce fft je konjugovaná symetrická a ponecháme pouze první
N / 2 body
f = sample_rate * (0: (N / 2)) / N; // přidružený frekvenční vektor
n = velikost (f, '*')
clf ()
plot (f, absy (1: n)))

Toto je nejběžnější použití Fourierovy transformace. Pomocí tohoto systému najdete jakoukoli frekvenci ve složitém, hlučném signálu. Rovnice jsou dnes široce používány v mnoha průmyslových odvětvích.
Funkce fft2 Scilabu je dvourozměrná verze rychlé Fourierovy transformace.

Jedním ze skvělých způsobů procvičení je vybrat tóny DTMF, vytvořit stisk jednoho tlačítka a nechat scilab zjistit správnou klávesu.

Ukázky v samotném Scilabu obsahují ukázku zvukových souborů, prostudujte si je.

Chcete-li se ponořit hlouběji, zde je několik odkazů na další čtení.

Pokročilá literatura:

https: // CNX.org / obsah / [chráněno e-mailem] / Implementace FFT v praxi # uid8

Wolfram…

http: // demonstrace.Wolfram.com / ComplexAndRealPlanesOfDiscreteFourierTransforms /

Implementace v jiných jazycích:

https: // www.nayuki.io / page / how-to-implement-the-diskrétní-Fourierova transformace

Chcete-li získat správný cit pro předmět:

https: // lépe vysvětleno.com / articles / an-interactive-guide-to-the-Fourier-transform /

Hry HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
Mnoho vývojářů a vydavatelů her přichází s HD remasterem starých her, aby prodloužili životnost franšízy, prosím fanoušky, kteří požadují kompatibilit...
Hry Jak používat AutoKey k automatizaci linuxových her
Jak používat AutoKey k automatizaci linuxových her
AutoKey je nástroj pro automatizaci stolních počítačů pro systémy Linux a X11, programovaný v programech Python 3, GTK a Qt. Pomocí jeho funkcí skript...
Hry Jak zobrazit počítadlo FPS v linuxových hrách
Jak zobrazit počítadlo FPS v linuxových hrách
Hraní na Linuxu získalo velký tlak, když společnost Valve v roce 2012 oznámila podporu systému Linux pro klienta Steam a jejich hry. Od té doby se mno...