Matemātika

Scilab FFT HOWTO

Scilab FFT HOWTO
Scilab ir lielisks rīks daudziem pielietojumiem gan zinātniskajā, gan inženiertehniskajā darbā. Šis raksts aptvers FFT īpašo gadījumu - ātro Furjē pārveidošanu.

Vispirms noskaidrosim, kas ir ātrs Furjē pārveidojums un kāpēc vēlaties to izmantot. Matemātika ir saistīta ar frekvencēm. Furjē transformācija ir metode, kā izdalīt mazākus viļņus sarežģītā viļņā. Tas izklausījās sarežģīti; klausoties mūziku, jūs dzirdat daudz dažādu piezīmju no dziedātāja, instrumentiem un tā tālāk. Kā cilvēki mēs bieži varam dzirdēt ģitāru atsevišķi, bet mēģiniet to izcelt ar tehnoloģiju ierakstā, un jums rodas nepatikšanas. Mūsdienu tehnoloģijas to var izdarīt, pateicoties Furjē pamatvienādojumu dažādajiem iemiesojumiem, kas tika izstrādāti gadu gaitā. Mūsdienu Furjē sērijas pielietojums ir attēlu un video saspiešana, GPS un MRI skenēšana. Tas viss ļauj tuvināt avotu un izmantot Furjē sērijas, lai ietaupītu atmiņu un iegūtu ātrāku rezultātu.

Matemātiķis Žans Batists Džozefs Furjē faktiski mēģināja atrisināt siltuma vienādojumu, lai būtu iespējams aprēķināt, kā siltums izplatās cietā vielā. Tas, ko viņš nāca klajā, bija daudz noderīgāks par to, kaut arī viņa metodes vēlāk tika pilnveidotas līdz formālākai versijai. Vienādojumi tagad tiek izmantoti plašā diapazonā.

Lai izdalītu noteiktu frekvenci sarežģītā signālā, varat izmantot dažus aprēķinus - ātrās Furjē transformācijas. Matemātiskais pamats tam prasa zināmu praksi. Khan Academy ir jauka vieta, kur mācīties matemātiku.

Ja jums ir nepieciešams analizēt viļņus, varat izmantot sinusa funkcijas, lai tuvinātu kopējo viļņu un iegūtu visus atsevišķos signālus no jauktā viļņa. Vai otrādi, jūs varat izveidot sarežģītu vilni no vairākiem sinusoidāliem viļņiem. Šī ir matemātikas pamatideja.

Lai labāk izprastu savus Furjē pārveidojumus, laba prakse ir tos rakstīt pašiem. Scilab jums ir vienkārša programmēšanas valoda, kas izstrādāta ar uzsvaru uz matemātiku.
Dažādi uzdevumi, kas jums būs nepieciešami Furjē pārveidojumi, sākas ar transformācijas koeficientu atrašanu. Iemesls ir tāds, ka to izmanto attēlu saspiešanai un daudziem citiem procesiem.

Apgūstot sērijas pamatus, vispirms tiek izmantoti koeficienti. Vienādojumi ir šādi:

Kods to atrisināšanai ir diezgan vienkāršs, tas sākas ar funkciju. Šī funkcija īsteno Furjē transformāciju mazos gabaliņos.
Lai definētu funkciju, izmantojiet acīmredzamo “function” konstrukciju. Zemāk ir četrstūraina kvadrātveida viļņu sērija:

funkcija y =fz)
y = 4 * grēks (t) / 1 *% pi + 4 * grēks (3 * t) / 3 *% pi + 4 * grēks (5 * t) / 5 *% pi + 4 * grēks (7 * t) / 7 *% pi
+ 4 * grēks (9 * t) / 9 *% pi
endfunction

Lai padarītu vilni vēl kvadrātveida, tas galu galā ir aptuvens, jums jāturpina palielināt terminu skaits. Kad vēlaties izveidot modeli, teiksim, karikatūru, Furjē transformāciju izmantojat ļoti līdzīgā veidā. Jums vienkārši jāapsver periods kā bezgalīgs.

Vienkārši pareizi? Nu, ne bez matemātikas pamatzināšanām. Izmēģiniet dažus piemērus pats, izmantojot scilab.

Šis piemērs parāda pēc iespējas vienkāršāku signālu kombināciju; divi atšķirīgas frekvences signāli.

// Izvēlieties izlases lielumu
 
N = 100;
 
// Iestatiet secību, tādējādi tiek izveidots masīvs
 
n = 0: N-1;
 
// Izveidojiet signālu biežumu
 
w1 =% pi / 4
 
w2 =% pi / 8
 
// Veiciet atlasītos signālus
 
s1 = cos (w1 * n); // Signāla pirmā sastāvdaļa
 
s2 = cos (w2 * n); // signāla otrā sastāvdaļa
 
// Apvienojiet abus vienā signālā
// Šajā gadījumā mēs veicam vienkāršu tīru signālu.
 
f = s1 + s2;
 
// Šeit ir iegūtais signāls, kas ir gatavs pārveidošanai.
 
attēls (0);
sižets (f);
 
// Šī signāla Furjē transformācijai jāparāda tikai komponentu biežums.
 
F = fft (f);
 
F_abs = abs (F);
 
attēls (1);
sižets (n, F_abs);
 
attēls (2);
sižets (F);

Izmantojiet iepriekš minēto piemēru, lai praktizētu transformācijas darbību. Noteikti nomainiet to, lai filtrētu dažādos veidos.

Padoms ir izmantot Scilab konsoli, lai redzētu, ko mainīgie satur katrā programmas solī, tādējādi jūs varat arī redzēt, ka 'F' ir iedomāts saturs. Mēģiniet mainīt äfä citā veidā, lai iegūtu pareizāku rezultātu.

Rūpniecībā Furjē pārveidojumu visbiežāk izmanto signāla analīzei. Lai filtrētu frekvences no trokšņainā signāla, jums jāsāk ar signāla izveidošanu vai importēšanu.  Šis koda fragments rada jauktu divu frekvenču signālu - 50 un 70 Hz. Kodā jūs varat redzēt arī "grand" lietojumu, tas ir scilab zvans pēc nejaušības principa. Šīs nejaušās vērtības tiek pievienotas, lai padarītu signālu mazliet trokšņaināku, tuvāku realitātei.

izlases likme = 1000;
t = 0: 1 / parauga likme: 0.6;
N = izmērs (t, '*'); // paraugu skaits
s = grēks (2 *% pi * 50 * t) + grēks (2 *% pi * 70 * t +% pi / 4) + grand (1, N, 'nor', 0,1);
Tagad jūs varat uzzīmēt 's' kā 't' funkciju un redzēt, ka diagramma izskatās netīra.
>> sižets (t, s);

Ir pienācis laiks izmēģināt visvienkāršāko Furjē transformāciju, padarot 'y' par Fourier transformāciju s.

y = fft (s);

fft

Ja jūs uzzīmējat “y” kā “t” funkciju, iegūstat nedaudz simetrisku modeli, kas svārstās no 0 līdz 0.6. Divi tapas ir tas, ko mēs meklējam, bet tagad mēs tos redzam laika domēnā. Patiesībā notika tas, ka rezultāts joprojām saturēja iedomātās vērtības. Lai atrastu divas frekvences frekvenču apgabalā, mums ir vajadzīgas vēl dažas darbības, lai atrastu tikai reālos skaitļus. Un tad jūs ņemat rezultātu absolūto vērtību. Grafiks skaidri norāda sākotnējās frekvences.

Šeit ir kods:

// s ir reāla, tāpēc fft atbilde ir konjugēta simetriska, un mēs saglabājam tikai pirmo
N / 2 punkti
f = parauga likme * (0: (N / 2)) / N; // saistīts frekvences vektors
n = izmērs (f, '*')
clf ()
sižets (f, absy (1: n)))

Tas ir visizplatītākais Furjē transformācijas pielietojums. Izmantojot šo sistēmu, jūs varat atrast jebkuru frekvenci sarežģītā, trokšņainā signālā. Vienādojumi mūsdienās tiek plaši izmantoti daudzās nozarēs.
Scilab funkcija fft2 ir ātras Furjē transformācijas divdimensiju versija.

Viens lielisks veids, kā praktizēt, ir izvēlēties DTMF toņus, izveidot vienu pogas nospiešanu un scilab izdomāt pareizo taustiņu.

Scilab demonstrācijās ir skaņas failu vitrīna, izpētiet to.

Ja vēlaties iedziļināties, šeit ir dažas saites uz turpmāku lasīšanu.

Padziļināta literatūra:

https: // cnx.org / content / [aizsargāts pa e-pastu] / FFTs-in-Practice # uid8

Wolfram…

http: // paraugdemonstrējumi.volframs.lv / ComplexAndRealPlanesOfDiscreteFourierTransforms /

Īstenošana citās valodās:

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

Lai iegūtu pareizo sajūtu par tēmu:

https: // labāk izskaidrots.com / articles / an-interactive-guide-to-the-Fourier-transform /

AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...
Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...
Kā nomainīt peles kreiso un labo pogu operētājsistēmā Windows 10
Tas ir diezgan normāli, ka visas datora peles ierīces ir ergonomiski izstrādātas lietotājiem ar labo roku. Bet ir pieejamas peles ierīces, kas ir īpaš...