GFT transformacija su tipinėmis Matlab funkcijomis  (0)

Derinant skaitmeninių filtrų algoritmus bei analizuojant gautus signalus neišvengiamai tenka naudoti spktrinę signalų analizę. Signalo spektras gaunamas pritaikant tiesioginę Furjė transformaciją. Skaitmeninių signalų apdorojimo srityje naudojami supaprastinti algoritmai, vadinami GFT (Greitoji Furjė transformacija) arba FFT (Fast Fourje transformation)


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Signalą, aprašytą laikinėje ašyje išskleidus Furjė eilute, gaunamas signalo spektras. Todėl Furjė transformacija labai svarbi signalų apdorojimui. Tačiau neperiodinio diskretinio signalo Furjė transformacija yra tolydinė dažnio funkcija ir jos apskaičiuoti tiesiogiai su PC negalima. Ši kliūtis apeinama diskretizuojant Furjė transformaciją. Todėl skaitmeninių signalų apdorojime naudojama diskretinė Furjė transformacija (DFT). Tačiau tokios transformacijos yra didelė skaičiavimų apimtis.

Jei seka turi N atskaitų, tai tiesioginės DFT arba atvirkštinės DFT vienai atskaitai apskaičiuoti reikia atlikti N kompleksinių sandaugų ir N-1 kompleksinių sudėčių. Visoms N atskaitoms apskaičiuoti – maždaug po N2 kompleksinių sandaugų ir sudėčių. Todėl skaitmeninėje technikoje paprastai naudojami ekonomiški DFT skaičiavimo algoritmai, kurie vadinami greitąja Furjė transformacija (GFT arba angliškai FFT).

GFT yra ne vienas algoritmas, o daug įvairių algoritmų, vadinamu vienu vardu. Panaudojant GFT skaičiavimų sudėtingumas įvertinamas ne N2, o Nlog2N.

Vienas iš algoritmų yra pateiktas MATLAB aplinkoje kaip gatava funkcija. Ši funkcija vadinama fft().

Y = fft(X)
Y = fft(X,n)
Y = fft(X,[],dim)
Y = fft(X,n,dim)

Funkcija fft grąžina masyvo X diskretinę Furjė transformaciją, paskaičiuotą pagal greitosios Furjė transformacijos algoritmą. Funkcijos gražintas masyvas Y yra tokio pat dydžio kaip ir masyvas X. Galima nurodyti, kiek taškų turi skaičiuoti fft funkcija. Taškų skaičius nurodomas kaip kintamasis n.

GFT skaičiuojama iki diskretizavimo dažnio. Reikia nepamiršti, jog GFT – periodinė funkcija, atsikartojant kas pusę diskretizavimo dažnio.

Dviejų sinusų sumos GFT apskaičiavimas pateiktas žemiau.

%GFT realizacija matlab terpeje 
clear all
A=10; %signalo amplitude
fs1=1*10^3; %pirmo sinuso daznis
fs2=2*10^3; %antro sinuso daznis
N=20; %atskaitu skaicius periode
Fd=N*fs1; %diskretizavimo daznis
NK=1; %periodu skaicius
i=1:NK*N; %atskaitu masyvas













x=A*sin(2*pi*(fs1/Fd)*i)+2*A*sin(2*pi*(fs2/Fd)*i);
%suminio signalo generavimas
is=1:Fd/N:Fd; %atskaitos GFT braizymui
S=fft(x,N); %N tasku GFT skaiciavimas
s_mod=abs(S)/(N/2); %normuotas GFT modulis
subplot(2,1,1); %Sukuriama dvieju eiluciu ir vieno stulpelio
%grafiku sistema. Braizoma pirmoje eiluteje
stem(i,x); %diskretizuotas signalas
title('Diskretizuotas signalas'); %grafiko pavadinimas
xlabel('n'); %grafiko x asies pavadinimas
ylabel('x(n)'); %grafiko y asies pavadinimas
subplot(2,1,2); %Sukuriama dvieju eiluciu ir vieno stulpelio
% grafiku sistema. Braizoma antroje eiluteje
stem(is,s_mod);
title('Signalo spektras'); %grafiko pavadinimas
xlabel('f'); %grafiko x asies pavadinimas
ylabel('|S(f)|'); %grafiko y asies pavadinimas

Signalas ir jo spektras

1 pav. Diskretizuotas signalas ir jo amplitudžių spektras

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(10)
(0)
(10)

Komentarai (0)