Matematika

Scilab FFT AKO

Scilab FFT AKO
Scilab je vynikajúci nástroj na mnoho použití vo vedeckých aj inžinierskych prácach. Tento článok sa bude venovať špeciálnemu prípadu FFT, rýchlej Fourierovej transformácie.

Najprv si ujasnime, čo je rýchla Fourierova transformácia a prečo ju chcete použiť. Matematika je predovšetkým o frekvenciách. Fourierova transformácia je metóda vyčlenenia menších vĺn v zložitej vlne. To znelo komplexne; keď počúvate hudbu, začujete rôzne tóny speváka, nástrojov a podobne. Ako ľudia môžeme gitaru často počuť aj sami, ale pokúsme sa ju v nahrávke vyčleniť technológiou a narazíte na problémy. Moderná technológia to dokáže vďaka rôznym stelesneniam základných Fourierových rovníc, ktoré sa vyvinuli v priebehu rokov. Moderným využitím série Fourier je kompresia obrázkov a videa, skenovanie GPS a MRI. To všetko približuje zdroj a používa Fourierove rady na šetrenie pamäte a rýchlejšie výsledky.

Matematik Jean-Baptiste Joseph Fourier sa skutočne snažil vyriešiť rovnicu tepla, aby bolo možné vypočítať, ako sa teplo šíri v tuhej hmote. To, s čím prišiel, bolo oveľa užitočnejšie ako to, aj keď sa jeho metódy neskôr vylepšili na formálnejšiu verziu. Rovnice sa teraz používajú v širokej škále oblastí.

Ak chcete v komplexnom signáli vyčleniť konkrétnu frekvenciu, môžete použiť niektoré výpočty, rýchle Fourierove transformácie. Matematický základ si vyžaduje určitú prax. Khan Academy je pekné miesto, kde sa môžete učiť matematiku.

Ak potrebujete analyzovať akékoľvek vlny, môžete pomocou sínusových funkcií priblížiť celkovú vlnu a získať všetky samostatné signály zo zmiešanej vlny. Alebo naopak, môžete vytvoriť zložitú vlnu z niekoľkých sínusových vĺn. Toto je základná myšlienka za matematikou.

Aby ste svojim Fourierovým transformáciám lepšie porozumeli, osvedčeným postupom je napísať ich sami. V Scilabe máte jednoduchý programovací jazyk navrhnutý s dôrazom na matematiku.
Rôzne úlohy, ktoré budete potrebovať, Fourierove transformácie začínajú hľadaním koeficientov transformácie. Dôvod je ten, že sa to používa na kompresiu obrázkov a mnoho ďalších procesov.

Keď sa naučíte základy tejto série, prvou vecou, ​​ktorá sa použije, sú koeficienty. Rovnice sú takéto:

Kód na ich riešenie je pomerne jednoduchý, začína funkciou. Táto funkcia implementuje Fourierovu transformáciu na malé kúsky.
Na definovanie funkcie použijete zrejmý konštrukt 'function'. Ďalej je Fourierova séria pre štvorcovú vlnu:

funkcia y =f(z)
y = 4 * hriech (t) / 1 *% pi + 4 * hriech (3 * t) / 3 *% pi + 4 * hriech (5 * t) / 5 *% pi + 4 * hriech (7 * t) / 7 *% pi
+ 4 * hriech (9 * t) / 9 *% pi
koncová funkcia

Aby bola vlna ešte viac štvorcová, je to koniec koncov aproximácia, musíte neustále zvyšovať počet výrazov. Ak chcete znovu vytvoriť vzor, ​​napríklad karikatúru, použijete Fourierovu transformáciu veľmi podobným spôsobom. Je len potrebné považovať obdobie za nekonečné.

Jednoduché, správne? No nie bez základných matematických znalostí. Vyskúšajte sami niekoľko príkladov pomocou scilabu.

Tento príklad ukazuje najjednoduchšiu možnú kombináciu signálov; dva signály rôznej frekvencie.

// Vyberte veľkosť vzorky
 
N = 100;
 
// Nastaví postupnosť, vytvorí sa pole
 
n = 0: N-l;
 
// Vytvorte frekvenciu signálov
 
w1 =% pi / 4
 
w2 =% pi / 8
 
// Vytvorte vzorkované signály
 
s1 = cos (w1 * n); // Prvá zložka signálu
 
s2 = cos (w2 * n); // Druhá zložka signálu
 
// Spojte dva do jedného signálu
// V takom prípade vydáme jednoduchý čistý signál.
 
f = s1 + s2;
 
// Tu je výsledný signál pripravený na transformáciu.
 
číslo (0);
pozemok (f);
 
// Fourierova transformácia tohto signálu by mala zobrazovať iba frekvenciu zložiek.
 
F = fft (f);
 
F_abs = abs (F);
 
postava 1);
plot (n, F_abs);
 
obrázok (2);
pozemok (F);

Vyššie uvedený príklad použite na precvičenie fungovania transformácie. Nezabudnite to zmeniť tak, aby ste filtrovali rôznymi spôsobmi.

Tip je, ak chcete pomocou konzoly Scilab zistiť, čo obsahujú premenné v každom kroku programu. Týmto spôsobom tiež uvidíte, že písmeno „F“ má imaginárny obsah. Skúste zmeniť äfä iným spôsobom, aby ste dosiahli správnejší výsledok.

V priemysle sa Fourierove transformácie najčastejšie používajú na analýzu signálu. Ak chcete odfiltrovať frekvencie z hlučného signálu, musíte najskôr vytvoriť alebo importovať signál.  Nasledujúci úryvok kódu vytvára zmiešaný signál dvoch frekvencií, 50 a 70 Hz. V kóde môžete vidieť aj použitie výrazu „grand“, čo je volanie scilabov na náhodné. Tieto náhodné hodnoty sa pridávajú, aby bol signál o niečo hlučnejší a priblížil sa k realite.

sample_rate = 1000;
t = 0: 1 / sample_rate: 0.6;
N = veľkosť (t, '*'); // počet vzoriek
s = sin (2 *% pi * 50 * t) + sin (2 *% pi * 70 * t +% pi / 4) + grand (1, N, 'nor', 0,1);
Teraz môžete vykresliť znak „s“ ako funkciu znaku „t“ a zistiť, že graf vyzerá chaoticky.
>> dej (t, s);

Tu je čas vyskúšať najjednoduchšiu z Fourierových transformácií, urobiť z „y“ Fourierovu transformáciu s.

y = ďalšie (y);

fft

Ak vykreslíte „y“ ako funkciu „t“, získate trochu symetrický vzor v rozmedzí od 0 do 0.6. Dva hroty sú to, čo hľadáme, ale teraz ich vidíme v časovej oblasti. Skutočne sa stalo, že výsledok stále obsahoval imaginárne hodnoty. Aby sme našli dve frekvencie vo frekvenčnej doméne, potrebujeme ešte nejaké operácie, aby sme našli iba skutočné čísla. A potom vezmete absolútnu hodnotu výsledkov. Graf jasne ukazuje pôvodné frekvencie.

Tu je kód:

// s je skutočné, takže odpoveď fft je konjugovaná symetrická a ponecháme iba prvú
N / 2 body
f = sample_rate * (0: (N / 2)) / N; // asociovaný frekvenčný vektor
n = veľkosť (f, '*')
clf ()
zápletka (f, absy (1: n)))

Toto je najbežnejšie použitie Fourierovej transformácie. Pomocou tohto systému nájdete každú frekvenciu v zložitom, hlučnom signáli. Rovnice sú dnes široko používané v mnohých priemyselných odvetviach.
Funkcia fft2 programu Scilab je dvojrozmerná verzia rýchlej Fourierovej transformácie.

Jedným zo skvelých spôsobov precvičenia je výber DTMF tónov, stlačenie jedného tlačidla a nastavenie scilabu správnym klávesom.

Samotné ukážky v programe Scilab obsahujú ukážku zvukových súborov, naštudujte si ich.

Ak sa chcete prehĺbiť, tu je niekoľko odkazov na ďalšie čítanie.

Pokročilá literatúra:

https: // cnx.org / obsah / [chránený e-mailom] / Implementácia FFT v praxi # uid8

Wolfram…

http: // demonštrácie.wolfram.com / ComplexAndRealPlanesOfDiscreteFourierTransforms /

Implementácia v iných jazykoch:

https: // www.nayuki.io / page / how-to-implement-the-discrete-fourier-transform

Ak chcete získať správny cit pre danú tému, postupujte takto:

https: // lepšie vysvetlené.com / articles / an-interactive-guide-to-the-fourier-transform /

Ako zmeniť smer posúvania myši a touchpadu v systéme Windows 10
Myš a TouchpadNielenže uľahčujú výpočty, ale sú aj efektívnejšie a menej časovo náročné. Nemôžeme si predstaviť život bez týchto zariadení, ale je pra...
Ako zmeniť veľkosť, farbu a schému ukazovateľa myši a kurzora v systéme Windows 10
Ukazovateľ myši a kurzor vo Windows 10 sú veľmi dôležité aspekty operačného systému. Dá sa to povedať aj pre iné operačné systémy, takže v skutočnosti...
Hry Zadarmo a open source herné motory pre vývoj hier pre Linux
Zadarmo a open source herné motory pre vývoj hier pre Linux
Tento článok sa bude zaoberať zoznamom bezplatných a otvorených herných nástrojov, ktoré možno použiť na vývoj 2D a 3D hier v systéme Linux. Existuje ...