Matematika

Scilab FFT KAKO

Scilab FFT KAKO
Scilab je odlično orodje za številne uporabe tako v znanstvenem kot v inženirskem delu. Ta članek bo obravnaval poseben primer FFT, hitre Fourierjeve transformacije.

Najprej pojasnimo, kaj je hitra Fourierjeva transformacija in zakaj jo želite uporabiti. Pri matematiki gre za frekvence. Fourierjeva transformacija je metoda za ločevanje manjših valov v kompleksnem valu. To je zvenelo zapleteno; ko poslušate glasbo, slišite veliko različnih not pevca, inštrumentov itd. Kot ljudje pogosto slišimo kitaro samostojno, vendar jo poskušamo s snemanjem izpostaviti s tehnologijo in naletimo na težave. Sodobna tehnologija to lahko stori, zahvaljujoč različnim inkarnacijam osnovnih Fourierjevih enačb, ki so se razvijale skozi leta. Sodobna uporaba serije Fourier je stiskanje slik in videov, GPS in MRI skeniranje. Vse to naredi približek viru in uporablja Fourierjevo serijo za prihranek spomina in hitrejše rezultate.

Matematik Jean-Baptiste Joseph Fourier je dejansko poskušal rešiti enačbo toplote, da bi lahko izračunal, kako se toplota širi v trdni snovi. Kar je prišel, je bilo veliko bolj koristno od tega, čeprav so bile njegove metode kasneje izboljšane v bolj formalno različico. Enačbe se zdaj uporabljajo na številnih področjih.

Če želite v kompleksnem signalu izločiti določeno frekvenco, lahko uporabite nekatere izračune, hitre Fourierjeve transformacije. Matematični temelj za to zahteva nekaj prakse. Khan Academy je prijeten kraj za učenje matematike.

Ko morate analizirati morebitne valove, lahko s sinusnimi funkcijami približate celotni val in dobite vse ločene signale iz mešanega vala. Ali obratno, lahko naredite kompleksen val iz več sinusnih valov. To je osnovna ideja matematike.

Če želite bolje razumeti svoje Fourierjeve transformacije, je dobra praksa, da jih napišete sami. V Scilabu imate preprost programski jezik, zasnovan s poudarkom na matematiki.
Različne naloge, ki jih boste potrebovali, Fourierjeve transformacije se začnejo pri iskanju koeficientov transformacije. Razlog je v tem, da se to uporablja za stiskanje slik in številne druge procese.

Ko se naučite osnov serije, najprej uporabite koeficiente. Enačbe so takšne:

Koda za njihovo reševanje je dokaj preprosta, začne se s funkcijo. Ta funkcija izvaja Fourierjevo transformacijo v majhnih koščkih.
Za definiranje funkcije uporabite očiten konstrukt 'function'. Spodaj je serija fourierjev 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 * sin (9 * t) / 9 *% pi
končna funkcija

Če želite, da je val še bolj kvadratni, je to navsezadnje približek, morate še naprej povečevati število izrazov. Ko želite poustvariti vzorec, recimo risanko, uporabite Fourierjevo transformacijo na zelo podoben način. Samo obdobje morate šteti za neskončno.

Preprosto desno? No, ne brez osnovnega matematičnega znanja. Poskusite nekaj primerov sami, z uporabo scilaba.

Ta primer prikazuje najpreprostejšo možno kombinacijo signalov; dva signala z različno frekvenco.

// Izberite velikost vzorca
 
N = 100;
 
// Nastavimo zaporedje, to ustvari matriko
 
n = 0: N-1;
 
// Ustvari frekvenco signalov
 
w1 =% pi / 4
 
w2 =% pi / 8
 
// Naredimo vzorčene signale
 
s1 = cos (w1 * n); // Prva komponenta signala
 
s2 = cos (w2 * n); // Druga komponenta signala
 
// Združite oba v en signal
// V tem primeru naredimo preprost čisti signal.
 
f = s1 + s2;
 
// Tu je nastali signal, pripravljen za preoblikovanje.
 
slika (0);
ploskev (f);
 
// Fourierjeva transformacija tega signala mora prikazati samo frekvenco komponent.
 
F = fft (f);
 
F_abs = abs (F);
 
slika (1);
ploskev (n, F_abs);
 
slika (2);
ploskev (F);

Z zgornjim primerom vadite, kako deluje preoblikovanje. Prepričajte se, da ga spremenite tako, da se filtrira na različne načine.

Namig je, da s pomočjo konzole Scilab vidite, kaj vsebujejo spremenljivke v vsakem koraku programa, tako lahko tudi vidite, da ima 'F' namišljeno vsebino. Poskusite spremeniti äfä na drug način, da boste dobili bolj pravilen rezultat.

V industriji je Fourierjeva transformacija najpogostejša za analizo signala. Če želite filtrirati frekvence iz hrupnega signala, morate začeti z izdelavo ali uvozom signala.  Naslednji delček kode ustvari mešani signal dveh frekvenc, 50 in 70 hz. V kodi lahko vidite tudi uporabo 'grand', to je scilab klic naključno. Te naključne vrednosti so dodane, da je signal nekoliko bolj hrupen, bližje resničnosti.

hitrost_vzorca = 1000;
t = 0: 1 / hitrost_vzorca: 0.6;
N = velikost (t, '*'); // število vzorcev
s = sin (2 *% pi * 50 * t) + sin (2 *% pi * 70 * t +% pi / 4) + velik (1, N, 'niti', 0,1);
Zdaj lahko narišete 's' v odvisnosti od 't' in vidite, da je graf neurejen.
>> ploskev (t, s);

Tu je čas, da preizkusimo najpreprostejše fourierjeve transformacije, naredimo 'y' fourierjevo transformacijo s.

y = fft (s);

fft

Če narišete 'y' v odvisnosti od 't', dobite nekoliko simetričen vzorec od 0 do 0.6. Dva konica sta tisto, kar iščemo, zdaj pa jih vidimo v časovni domeni. V resnici se je zgodilo, da je rezultat še vedno vseboval namišljene vrednosti. Da bi našli dve frekvenci v frekvenčnem območju, potrebujemo še nekaj operacij, da najdemo samo realna števila. In potem vzamete absolutno vrednost rezultatov. Graf jasno prikazuje izvorne frekvence.

Tu je koda:

// s je resničen, zato je odziv fft konjugiran simetrično in ohranimo le prvega
N / 2 točki
f = hitrost_vzorca * (0: (N / 2)) / N; // pripadajoči frekvenčni vektor
n = velikost (f, '*')
clf ()
ploskev (f, absy (1: n)))

To je najpogostejša uporaba Fourierjeve transformacije. Z uporabo tega sistema lahko najdete katero koli frekvenco v zapletenem, hrupnem signalu. Enačbe se danes pogosto uporabljajo v mnogih panogah.
Funkcija fft2 Scilaba je dvodimenzionalna različica hitre fourierjeve transformacije.

Odličen način vadbe je izbrati tone DTMF, ustvariti pritisk z enim gumbom in scilab najti pravilno tipko.

Predstavitve v programu Scilab vsebujejo predstavitev zvočne datoteke, preučite jo.

Če se želite poglobiti, tukaj je nekaj povezav do nadaljnjega branja.

Napredna literatura:

https: // cnx.org / contents / [email protected] / Implementing-FFTs-in-Practice # uid8

Wolfram ..

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

Izvajanje v drugih jezikih:

https: // www.nayuki.io / page / how-to-Implementirati-diskretna-Furiejeva preobrazba

Da bi dobili pravi občutek za zadevo:

https: // bolje pojasnjeno.com / articles / interaktivni vodnik-do-the-fourierjeve transformacije /

Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...
Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...
Najboljše igre z ročnim sledenjem
Oculus Quest je pred kratkim predstavil odlično idejo ročnega sledenja brez krmilnikov. Z vedno večjim številom iger in dejavnosti, ki izvajajo podpor...