Matemaatika

Scilab FFT HOWTO

Scilab FFT HOWTO
Scilab on suurepärane vahend mitmel otstarbel nii teadus- kui ka inseneritöös. Selles artiklis käsitletakse FFT erijuhtumit Fast Fourier Transform.

Kõigepealt selgitame, mis on kiire Fourier Transform ja miks soovite seda kasutada. Matemaatika on seotud sagedustega. Fourieri teisendus on meetod väiksemate lainete eraldamiseks keerulises laines. See kõlas keeruliselt; muusikat kuulates kuulete palju erinevaid noodid lauljalt, instrumente ja nii edasi. Inimestena võime kitarri sageli iseseisvalt kuulda, kuid proovime seda salvestusega tehnoloogiaga eraldi välja tuua ja teil tekib probleeme. Tänapäevane tehnoloogia saab sellega hakkama, tänu Fourieri põhivõrrandite erinevatele kehastustele, mis aastate jooksul välja töötati. Fourieri seeria tänapäevased kasutusalad on piltide ja videote pakkimine, GPS ja MRI skaneerimine. Kõik need lähendavad allikat ja kasutavad Fourieri seeriat mälu säästmiseks ja kiiremate tulemuste saamiseks.

Matemaatik Jean-Baptiste Joseph Fourier üritas tegelikult lahendada soojusvõrrandit, et oleks võimalik arvutada, kuidas soojus levib tahkes aines. See, mille ta välja mõtles, oli sellest palju kasulikum, ehkki tema meetodeid täiendati hiljem ametlikumaks versiooniks. Nüüd kasutatakse võrrandeid paljudes valdkondades.

Konkreetse sageduse väljatoomiseks keerulises signaalis võite kasutada mõningaid arvutusi - Fourieri kiire teisendust. Selle matemaatiline alus nõuab teatud harjutamist. Khani akadeemia on kena koht matemaatika õppimiseks.

Kui peate analüüsima mis tahes laineid, võite siinusfunktsioonide abil kogu laine orienteerida ja saada kõik segalaine eraldi signaalid. Või vastupidi, saate keeruka laine teha mitmest siinuslainest. See on matemaatika põhiidee.

Fourieri teisenduste paremaks mõistmiseks on hea tava need ise kirjutada. Scilabis on teil lihtne programmeerimiskeel, mis on kujundatud rõhuasetusega matemaatikale.
Fourieri teisenduste jaoks vajalikud erinevad ülesanded algavad teisenduskoefitsientide leidmisest. Põhjus on see, et seda kasutatakse piltide tihendamiseks ja paljudeks muudeks protsessideks.

Seeria põhitõdesid õppides on kõigepealt koefitsiendid. Võrrandid on järgmised:

Nende lahendamiseks mõeldud kood on üsna lihtne, see algab funktsioonist. See funktsioon rakendab Fourier'i teisendust väikestes tükkides.
Funktsiooni määratlemiseks kasutage ilmset 'function' konstruktsiooni. Allpool on nelinurkne seeria ruudukujulise laine jaoks:

funktsioon y =fz)
y = 4 * patt (t) / 1 *% pi + 4 * patt (3 * t) / 3 *% pi + 4 * patt (5 * t) / 5 *% pi + 4 * pattu (7 * t) / 7 *% pi
+ 4 * patt (9 * t) / 9 *% pi
lõppfunktsioon

Et laine veelgi ruudukujulisemaks muuta, on see lõppude lõpuks ligikaudne, peate terminite arvu pidevalt suurendama. Kui otsite mustri, näiteks koomiksi loomist, kasutate Fourieri teisendit väga sarnasel viisil. Peate lihtsalt arvestama perioodi lõpmatuks.

Lihtne eks? Noh, mitte ilma matemaatika põhiteadmisteta. Proovige Scilabi abil ise mõnda näidet.

See näide näitab võimalikult lihtsat signaali kombinatsiooni; kaks erineva sagedusega signaali.

// Valige valimi suurus
 
N = 100;
 
// Määra jada, see loob massiivi
 
n = 0: N-1;
 
// Loo signaalide sagedus
 
w1 =% pi / 4
 
w2 =% pi / 8
 
// Tehke valimi signaalid
 
s1 = cos (w1 * n); // signaali esimene komponent
 
s2 = cos (w2 * n); // signaali teine ​​komponent
 
// Ühendage need kaks üheks signaaliks
// Sel juhul anname lihtsa puhta signaali.
 
f = s1 + s2;
 
// Siin on saadud signaal, mis on teisendamiseks valmis.
 
joonis (0);
joonis (f);
 
// Selle signaali Fourieri teisendus peaks näitama ainult komponentide sagedust.
 
F = fft (f);
 
F_abs = abs (F);
 
Joonis 1);
graafik (n, F_abs);
 
joonis (2);
joonis (F);

Teisenduse toimimise harjutamiseks kasutage ülaltoodud näidet. Veenduge, et muudate selle filtreerimiseks erinevatel viisidel.

Nõuanne on kasutada Scilabi konsooli, et näha, mida muutujad programmi igas etapis sisaldavad, nii näete ka, et tähel F on kujuteldav sisu. Õigema tulemuse saamiseks proovige äfä muul viisil muuta.

Tööstuses kasutatakse Fourieri teisenduste kõige levinumat signaali analüüsimiseks. Lärmaka signaali sageduste välja filtreerimiseks peate alustama signaali loomise või importimisega.  Järgmine koodijupp loob segatud signaali kahest sagedusest, 50 ja 70 hz. Koodis näete ka "grand" kasutamist, see on scilabi kutse juhuslikuks. Need juhuslikud väärtused lisatakse, et muuta signaal natuke lärmakamaks, tegelikkusele lähemale.

proovi_hind = 1000;
t = 0: 1 / valimi määr: 0.6;
N = suurus (t, '*'); // proovide arv
s = sin (2 *% pi * 50 * t) + sin (2 *% pi * 70 * t +% pi / 4) + grand (1, N, 'nor', 0,1);
Nüüd saate joonistada 's' funktsioonina 't' ja näha, et graafik näeb välja räpane.
>> joonis (t, s);

Siin on aeg proovida lihtsamaid Fourieri teisendusi, teha y-st Fourieri teisendus.

y = fft (s);

fft

Kui koostate 'y' funktsiooni 't' funktsioonina, saate mõnevõrra sümmeetrilise mustri vahemikus 0 kuni 0.6. Kaks tippu on see, mida me otsime, kuid nüüd näeme neid aja domeenis. Mis tegelikult juhtus, oli see, et tulemus sisaldas ikkagi kujuteldavaid väärtusi. Kahe sageduse leidmiseks sagedusalas vajame veel mõnda toimingut, et leida ainult reaalarvud. Ja siis võtate tulemuste absoluutväärtuse. Graafik osutab selgelt algsetele sagedustele.

Siin on kood:

// s on reaalne, nii et fft-vastus on konjugaat-sümmeetriline ja me säilitame ainult esimese
N / 2 punkti
f = proovi määr * (0: (N / 2)) / N; // seotud sagedusvektor
n = suurus (f, '*')
clf ()
joonistus (f, absy (1: n)))

See on Fourieri teisenduse kõige tavalisem kasutus. Selle süsteemi abil leiate keerulise mürarikka signaali mis tahes sageduse. Valemeid kasutatakse tänapäeval paljudes tööstusharudes laialdaselt.
Scilabi funktsioon fft2 on kiire Fourieri teisenduse kahemõõtmeline versioon.

Üks suurepärane viis harjutamiseks on valida DTMF-toonid, luua üks nupuvajutus ja lasta scilabil välja selgitada õige klahv.

Scilabi demod ise sisaldavad helifailide vitriini, uurige seda.

Kui soovite süveneda, on siin mõned lingid edasiseks lugemiseks.

Täiustatud kirjandus:

https: // cnx.org / sisu / [meiliga kaitstud] / Praktikas FFT-de rakendamine # uid8

Wolfram…

http: // meeleavaldused.wolfram.com / ComplexAndRealPlanesOfDiscreteFourierTransforms /

Teistes keeltes rakendamine:

https: // www.nayuki.io / page / kuidas-diskreetset-Fourier-teisendust rakendada

Objekti jaoks õige tunde saamiseks toimige järgmiselt

https: // paremini selgitatud.com / artiklid / interaktiivne juhis Fourieri teisendamiseks /

Kuidas muuta hiirekursori ja kursori suurust, värvi ja skeemi Windows 10-s
Windows 10 hiirekursor ja kursor on operatsioonisüsteemi väga olulised aspektid. Seda võib öelda ka teiste opsüsteemide kohta, nii et tegelikult pole ...
Tasuta ja avatud lähtekoodiga mängumootorid Linuxi mängude arendamiseks
See artikkel hõlmab loetelu tasuta ja avatud lähtekoodiga mängumootoritest, mida saab kasutada 2D- ja 3D-mängude arendamiseks Linuxis. Selliseid mängu...
Tomb Raider for Linuxi õpetus
Shadow of the Tomb Raider on kaheteistkümnes täiendus seeria Tomb Raider - tegevus- ja seiklusmängude frantsiisile, mille on loonud Eidos Montreal. Ni...