Matematika

„Scilab FFT HOWTO“

„Scilab FFT HOWTO“
Scilab yra puiki priemonė, naudojama daugeliui mokslinio ir inžinerinio darbo sričių. Šis straipsnis apims specialų FFT atvejį „Fast Fourier Transform“.

Pirmiausia išsiaiškinkime, kas yra greita „Fourier Transform“ ir kodėl norite ją naudoti. Matematika yra susijusi su dažniais. Furjė transformacija yra metodas išskirti mažesnes bangas sudėtingoje bangoje. Tai skambėjo kompleksiškai; klausydamiesi muzikos girdite daugybę skirtingų dainininko natų, instrumentų ir pan. Kaip žmonės, mes dažnai galime išgirsti gitarą atskirai, bet pabandykite ją išskirti naudodamiesi technologija ir susiduriate su bėda. Šiuolaikinės technologijos tai gali padaryti, nes per metus buvo sukurtos skirtingos pagrindinių Furjė lygčių įsikūnijimai. Šiuolaikinis „Fourier“ serijos panaudojimas yra vaizdo ir vaizdo glaudinimas, GPS ir MRT nuskaitymas. Visa tai apytiksliai atspindi šaltinį ir naudokite „Fourier“ serijas, kad taupytumėte atmintį ir gautumėte greitesnius rezultatus.

Matematikas Jeanas-Baptiste'as Josephas Fourieras iš tikrųjų bandė išspręsti šilumos lygtį, kad būtų galima apskaičiuoti, kaip šiluma sklinda kietojoje medžiagoje. Tai, ką jis sugalvojo, buvo kur kas naudingesnis, nors vėliau jo metodai buvo patobulinti iki oficialesnės versijos. Dabar lygtys naudojamos įvairiuose laukuose.

Norėdami išskirti konkretų sudėtingo signalo dažnį, galite naudoti keletą skaičiavimų - „Fast Fourier Transforms“. Tam reikalingas tam tikras matematinis pagrindas. Khano akademija yra puiki vieta mokytis matematikos.

Kai jums reikia analizuoti bet kokias bangas, galite naudoti sinuso funkcijas, kad apytiksliai įvertintumėte bendrą bangą ir gautumėte visus atskirus signalus iš mišrios bangos. Arba atvirkščiai, jūs galite padaryti kompleksinę bangą iš kelių sinusinių bangų. Tai yra pagrindinė matematikos idėja.

Norint geriau suprasti „Fourier“ transformacijas, gera praktika yra jas parašyti patiems. „Scilab“ turite paprastą programavimo kalbą, skirtą matematikai.
Skirtingos užduotys, kurių jums reikės Furjė transformacijoms, prasideda ieškant transformacijos koeficientų. Priežastis ta, kad būtent tai naudojama nuotraukų glaudinimui ir daugeliui kitų procesų.

Kai sužinosite serijos pagrindus, pirmiausia naudojami koeficientai. Lygtys yra tokios:

Joms išspręsti reikalingas kodas yra gana paprastas, jis prasideda funkcija. Ši funkcija įgyvendina Furjė transformaciją mažais gabalėliais.
Norėdami apibrėžti funkciją, naudokite akivaizdų „funkcijos“ konstruktą. Žemiau pateikiama keturkampė kvadratinės bangos serija:

funkcija y =fz)
y = 4 * nuodėmė (t) / 1 *% pi + 4 * nuodėmė (3 * t) / 3 *% pi + 4 * nuodėmė (5 * t) / 5 *% pi + 4 * nuodėmė (7 * t) / 7 *% pi
+ 4 * nuodėmė (9 * t) / 9 *% pi
galinė funkcija

Norint, kad banga būtų dar kvadratiškesnė, tai yra apytikslis, nes jūs turite nuolat didinti terminų skaičių. Kai norite atkurti modelį, tarkim, animacinį filmą, naudokite Furjė transformaciją labai panašiai. Jums tereikia laikyti laikotarpį begaliniu.

Paprasta teisė? Na, ne be pagrindinių matematikos žinių. Išbandykite keletą pavyzdžių patys, naudodami scilab.

Šis pavyzdys rodo kuo paprastesnį signalo derinį; du skirtingo dažnio signalai.

// Pasirinkite imties dydį
 
N = 100;
 
// Nustatykite seką, taip sukuriamas masyvas
 
n = 0: N-1;
 
// Sukurkite signalų dažnį
 
w1 =% pi / 4
 
w2 =% pi / 8
 
// Padarykite atrinktus signalus
 
s1 = cos (w1 * n); // Pirmasis signalo komponentas
 
s2 = cos (w2 * n); // Antrasis signalo komponentas
 
// Sujunkite abu į vieną signalą
// Šiuo atveju mes pateikiame paprastą švarų signalą.
 
f = s1 + s2;
 
// Čia yra gautas signalas, paruoštas transformacijai.
 
paveikslas (0);
siužetas (f);
 
// Šio signalo Furjė transformacija turėtų rodyti tik komponentų dažnį.
 
F = fft (f);
 
F_abs = abs (F);
 
figūra 1);
siužetas (n, F_abs);
 
paveikslas (2);
siužetas (F);

Naudokite aukščiau pateiktą pavyzdį, kad praktikuotumėte transformacijos veikimą. Būtinai pakeiskite, kad filtruotumėte įvairiais būdais.

Patarimas yra naudoti „Scilab“ konsolę, kad sužinotumėte, kokie kintamieji yra kiekviename programos žingsnyje, taip pat galite pamatyti, kad „F“ turi įsivaizduojamą turinį. Pabandykite pakeisti äfä kitu būdu, kad gautumėte teisingesnį rezultatą.

Pramonėje dažniausiai Furjė transformacijos naudojamos signalui analizuoti. Norėdami filtruoti dažnius iš triukšmingo signalo, turite pradėti nuo signalo kūrimo ar importavimo.  Šis kodo fragmentas sukuria mišrų dviejų, 50 ir 70 Hz dažnių, signalą. Kode taip pat galite pamatyti „grand“ vartojimą, tai yra „Scilab“ raginimas atsitiktinai. Šios atsitiktinės vertės pridedamos, kad signalas būtų šiek tiek triukšmingesnis, arčiau tikrovės.

imties_vertė = 1000;
t = 0: 1 / pavyzdžio norma: 0.6;
N = dydis (t, '*'); // mėginių skaičius
s = nuodėmė (2 *% pi * 50 * t) + sin (2 *% pi * 70 * t +% pi / 4) + grand (1, N, 'nor', 0,1);
Dabar galite nubraižyti „s“ kaip „t“ funkciją ir pamatyti, kad diagrama atrodo netvarkinga.
>> siužetas (t, s);

Atėjo laikas išbandyti paprasčiausią iš Furjė transformacijų, kad „y“ būtų s Furjė transformacija.

y = fft (s);

fft

Jei nubraižysite „y“ kaip „t“ funkciją, gausite šiek tiek simetrišką modelį nuo 0 iki 0.6. Du smaigaliai yra tai, ko mes ieškome, bet dabar mes juos matome laiko srityje. Iš tikrųjų įvyko tai, kad rezultate vis dar buvo įsivaizduojamos vertės. Norint rasti du dažnius dažnių srityje, reikia dar šiek tiek operacijų, kad rastume tik realius skaičius. Tada paimkite absoliučią rezultatų vertę. Grafikas aiškiai nurodo pradinius dažnius.

Štai kodas:

// s yra tikras, todėl fft atsakas yra konjuguotas simetriškas, o mes išlaikome tik pirmąjį
N / 2 taškai
f = imties norma * (0: (N / 2)) / N; // susijęs dažnio vektorius
n = dydis (f, '*')
clf ()
siužetas (f, absy (1: n)))

Tai yra dažniausias Furjė transformacijos panaudojimas. Naudodamiesi šia sistema galite rasti bet kokį dažnį sudėtingame, triukšmingame signale. Lygtys šiandien plačiai naudojamos daugelyje pramonės šakų.
„Scilab“ funkcija „fft2“ yra greito Furjė transformacijos dvimatė versija.

Vienas puikus būdas praktikuotis yra pasirinkti DTMF tonus, sukurti vieną mygtuko paspaudimą ir scilab išsiaiškinti teisingą klavišą.

Pačioje „Scilab“ demonstracijose yra garso failų vitrina, ją tyrinėkite.

Jei norite pasigilinti, pateikite kelias nuorodas į tolesnį skaitymą.

Išplėstinė literatūra:

https: // cnx.org / content / [apsaugotas el. paštu] / FFTs-in-Practice # uid8

„Wolfram“…

http: // demonstracijos.volframas.lt / ComplexAndRealPlanesOfDiscreteFourierTransforms /

Įgyvendinimas kitomis kalbomis:

https: // www.nayuki.io / page / how-to-the-discrete-Fourier-transformuoti

Norėdami tinkamai pajusti temą:

https: // geriau paaiškinta.com / articles / an-interactive-guide-to-the-Fourier-transform /

„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...
„OpenTTD“ ir „Simutrans“
Sukurti savo transporto modeliavimą gali būti smagu, atpalaiduojanti ir be galo viliojanti. Štai kodėl jūs turite įsitikinti, kad išbandėte kuo daugia...
„OpenTTD“ pamoka
„OpenTTD“ yra vienas iš populiariausių verslo modeliavimo žaidimų. Šiame žaidime turite sukurti nuostabų transporto verslą. Tačiau pradėsite nuo mažda...