Matematika

Scilab FFT KAKO

Scilab FFT KAKO
Scilab je izvrstan alat za mnoge svrhe u znanstvenom i inženjerskom radu. Ovaj će članak obraditi poseban slučaj FFT-a, brze Fourierove transformacije.

Prvo pojasnimo što je brza Fourierova transformacija i zašto je želite koristiti. Matematika se odnosi na frekvencije. Fourierova transformacija metoda je za izdvajanje manjih valova u složeni val. To je zvučalo složeno; kada slušate glazbu, čujete mnogo različitih nota pjevača, instrumenata i tako dalje. Kao ljudi, gitaru često možemo čuti samostalno, ali pokušavamo je izdvojiti tehnologijom u snimanju i nailazite na probleme. Suvremena tehnologija to može, zahvaljujući različitim utjelovljenjima osnovnih Fourierovih jednadžbi koje su se razvijale tijekom godina. Suvremena primjena Fourierove serije su kompresija slike i videa, GPS i MRI skeniranje. Sve to čini aproksimaciju izvora i koristi Fourierove serije za uštedu memorije i brže rezultate.

Matematičar Jean-Baptiste Joseph Fourier zapravo je pokušavao riješiti jednadžbu topline kako bi mogao izračunati kako se toplina širi u čvrstoj tvari. Ono što je smislio bilo je mnogo korisnije od toga, iako su njegove metode kasnije poboljšane u formalniju verziju. Jednadžbe se sada koriste u širokom rasponu polja.

Da biste izdvojili određenu frekvenciju u složenom signalu, možete upotrijebiti neke izračune, brze Fourierove transformacije. Matematički temelj za to zahtijeva određenu praksu. Khan Academy je lijepo mjesto za učenje matematike.

Kada trebate analizirati bilo koji val, možete koristiti sinusne funkcije za približavanje ukupnog vala i dobivanje svih zasebnih signala iz miješanog vala. Ili obrnuto, možete napraviti složeni val od nekoliko sinusnih valova. To je osnovna ideja matematike.

Da biste bolje razumjeli svoje Fourierove transformacije, dobra je praksa da ih sami napišete. U Scilabu imate jednostavan programski jezik dizajniran s naglaskom na matematiku.
Različiti zadaci koji će vam trebati Fourierove transformacije započinju pronalaženjem koeficijenata transformacije. Razlog je taj što se to koristi za kompresiju slika i mnoge druge procese.

Kada naučite osnove serije, prvo što se koristi su koeficijenti. Jednadžbe su ovakve:

Kôd za njihovo rješavanje prilično je jednostavan, započinje funkcijom. Ova funkcija provodi Fourierovu transformaciju u malim dijelovima.
Da biste definirali funkciju, koristite očitu konstrukciju 'funkcije'. Ispod je fourierova serija za kvadratni val:

funkcija 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 * grijeh (9 * t) / 9 *% pi
krajnja funkcija

Da bi val bio još kvadratniji, to je ipak aproksimacija, morate stalno povećavati broj članaka. Kada želite ponovno stvoriti obrazac, recimo crtić, koristite Fourierovu transformaciju na vrlo sličan način. Trebate samo smatrati to razdoblje beskonačnim.

Jednostavno u pravu? Pa, ne bez osnovnog matematičkog znanja. Isprobajte nekoliko primjera sami, koristeći scilab.

Ovaj primjer prikazuje najjednostavniju moguću kombinaciju signala; dva signala različite frekvencije.

// Odaberite veličinu uzorka
 
N = 100;
 
// Postavite niz, ovo stvara niz
 
n = 0: N-1;
 
// Stvaranje frekvencije signala
 
w1 =% pi / 4
 
w2 =% pi / 8
 
// Izraditi uzorkovane signale
 
s1 = cos (w1 * n); // Prva komponenta signala
 
s2 = cos (w2 * n); // Druga komponenta signala
 
// Kombinirajte dva u jedan signal
// U ovom slučaju dajemo jednostavan čisti signal.
 
f = s1 + s2;
 
// Evo rezultirajućeg signala spremnog za transformaciju.
 
slika (0);
zaplet (f);
 
// Fourierova transformacija ovog signala trebala bi prikazati samo frekvenciju komponenata.
 
F = fft (f);
 
F_abs = trbušnjaci (F);
 
slika (1);
zaplet (n, F_abs);
 
slika (2);
zaplet (F);

Koristite gornji primjer da biste uvježbali kako transformacija funkcionira. Svakako ga promijenite da filtrira na različite načine.

Savjet je da koristite Scilab konzolu da biste vidjeli što varijable sadrže u svakom koraku programa, na ovaj način također možete vidjeti da 'F' ima imaginarni sadržaj. Pokušajte promijeniti äfä na drugi način da biste dobili točniji rezultat.

U industriji je najčešće korištenje Fourierovih transformacija za analizu signala. Da biste filtrirali frekvencije iz bučnog signala, morate započeti s izradom ili uvozom signala.  Sljedeći isječak koda stvara mješoviti signal od dvije frekvencije, 50 i 70 hz. U kodu možete vidjeti i upotrebu 'grand', ovo je scilab poziv na slučajan način. Te se slučajne vrijednosti dodaju kako bi signal bio malo bučniji, bliži stvarnosti.

brzina_uzorka = 1000;
t = 0: 1 / brzina_uzorka: 0.6;
N = veličina (t, '*'); // broj uzoraka
s = sin (2 *% pi * 50 * t) + sin (2 *% pi * 70 * t +% pi / 4) + grand (1, N, 'niti', 0,1);
Sada možete ucrtati 's' u funkciji 't' i vidjeti da grafikon izgleda neuredno.
>> zaplet (t, s);

Ovdje je vrijeme da isprobamo najjednostavniju fourierovu transformaciju, napravimo 'y' furierovu transformaciju s.

y = fft (s);

fft

Ako nacrtate 'y' u funkciji 't', dobit ćete donekle simetričan uzorak u rasponu od 0 do 0.6. Dvije šiljke su ono što tražimo, ali sada ih vidimo u vremenskoj domeni. Ono što se stvarno dogodilo bilo je da rezultat i dalje sadrži zamišljene vrijednosti. Da bismo pronašli dvije frekvencije u frekvencijskoj domeni, trebaju nam još neke radnje kako bismo pronašli samo stvarne brojeve. A onda uzmete apsolutnu vrijednost rezultata. Grafikon jasno ukazuje na izvorne frekvencije.

Evo koda:

// s je stvaran, pa je fft odgovor konjugiran simetričan i zadržavamo samo prvi
N / 2 boda
f = brzina_uzorka * (0: (N / 2)) / N; // pridruženi vektor frekvencije
n = veličina (f, '*')
clf ()
zaplet (f, apsy (1: n)))

Ovo je najčešća upotreba Fourierove transformacije. Korištenjem ovog sustava možete pronaći bilo koju frekvenciju u složenom, bučnom signalu. Jednadžbe se danas široko koriste u mnogim industrijama.
Funkcija fft2 Scilaba je dvodimenzionalna verzija brze Furieove transformacije.

Sjajan način vježbanja je odabrati DTMF tonove, stvoriti jedan gumb pritiskom i dati scilabu da shvati ispravnu tipku.

Demo u Scilabu sadrži izložbu zvučnih datoteka, proučite je.

Ako želite dublje kopati, evo nekoliko poveznica za daljnje čitanje.

Napredna literatura:

https: // cnx.org / contents / [email protected] / Implementing-FFT-ovi-u-praksi # uid8

Wolfram ..

http: // demonstracije.volfram.com / ComplexAndRealPlanesOfDiscreteFourierTransforms /

Implementacija na drugim jezicima:

https: // www.nayuki.io / page / kako-implementirati-diskretnu-furie-transformaciju

Da biste stekli pravi osjećaj za temu:

https: // bolje objašnjeno.com / članci / interaktivni vodič-za-the-fourier-ovu transformaciju /

Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...
Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...