Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clc
- clear
- xdel(winsid())
- fs=32;//częstotliwość próbkowania
- T=1/fs; //wielkość przedziałów dyskretnych podczas 1 sek. N=100;//ilość próbek N = 1 sek.
- N=32; // ilość próbek N=1 sek
- n=0:N-1; //wektor próbek
- t=[];//n*T;
- xn=[];
- //xn=sin(2*%pi*2.5*t)+0.5*cos(2*%pi*7*t)//wartości próbkowane x(n) sygnału
- plot(t,xn)
- title('Wykres sygnału')
- xlabel('Czas [s]')
- ylabel('Amplituda')
- Xn=fft(xn);//transformata sygnału dyskretnego x(n) o częst. 5 Hz
- half=round(length(n)/2);// analiza połowy widma (ponieważ dla sygnału okresowego transformata Fouriera jest symetryczna !)
- n1=n(1:half);// nowy wektor dziedziny
- Xn1=Xn(1:half); // nowy wektor wartości
- scf()
- subplot(1,2,1)
- plot2d3(n1,abs(Xn1))
- title('Dyskretne widmo amplitudowe')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe')
- subplot(1,2,2)
- zp=2*N;//wielokrotność próbek (może być dowolna wartość, min. 2 x większa od N, np.100)
- x_zpad = [xn zeros(1,zp-N)] ; //dopełnienie zerami - tzw. zero pad
- X_zpad_mags = abs(fft(x_zpad));
- nn=0:length(x_zpad)-1;//wybieramy istotną dla nas dziedzinę FFT
- d=zp/N;//dzielnik wykorzystany do normalizacji osi x
- plot(nn(1:zp/2)/d,X_zpad_mags(1:zp/2));// dzielimy przez 2 bo wybieramy połowę wykresu (można wybrać mniejszy zakres aby wyświetlić istotne dane)
- title('Widmo amplitudowe z dopełnieniem zerami')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Hamminga wraz z dopełnieniem zerami
- hm=[0.53836-0.46164*cos(2*%pi*n/(N-1)) zeros(1,zp-N)];
- X_zpad_mags_hm = abs(fft(x_zpad.*hm));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_hm(1:zp/2))
- title('Zastosowanie okna Hamminga')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Hanninga wraz z dopełnieniem zerami
- hn=[0.5*(1-cos(2*%pi*n/(N-1))) zeros(1,zp-N)];
- X_zpad_mags_hn = abs(fft(x_zpad.*hn));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_hn(1:zp/2))
- title('Zastosowanie okna Hanna')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Bartletta wraz z dopełnieniem zerami
- ba=[1-abs((n-((N-1)/((N-1)/2)))/(2)) zeros(1,zp-N)];
- X_zpad_mags_ba = abs(fft(x_zpad.*ba));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
- title('Zastosowanie okna Bartletta')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna trójkątnego wraz z dopełnieniem zerami
- ba=[1-abs((n-((N-1)/2))/(N/2)) zeros(1,zp-N)];
- X_zpad_mags_ba = abs(fft(x_zpad.*ba));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
- title('Zastosowanie okna trójkątnego')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Bartletta-Hanna wraz z dopełnieniem zerami
- ba=[0.62-0.48*abs((n/(N-1))-0.5)-0.38*cos((2*%pi*n)/(N-1)) zeros(1,zp-N)];
- X_zpad_mags_ba = abs(fft(x_zpad.*ba));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
- title('Zastosowanie okna Bartletta-Hanna')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Blackmana wraz z dopełnieniem zerami
- a0=0.42;
- a1=0.5;
- a2=0.08;
- ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1)) zeros(1,zp-N)];
- X_zpad_mags_ba = abs(fft(x_zpad.*ba));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
- title('Zastosowanie okna Blackmana')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Nuttalla wraz z dopełnieniem zerami
- a0=0.355768;
- a1=0.487396;
- a2=0.144232;
- a3=0.012604;
- ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1))-a3*cos((6*%pi*n)/(N-1)) zeros(1,zp-N)];
- X_zpad_mags_ba = abs(fft(x_zpad.*ba));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
- title('Zastosowanie okna Nuttalla')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Blackmana-Harrisa wraz z dopełnieniem zerami
- a0=0.35875;
- a1=0.48829;
- a2=0.14128;
- a3=0.01168;
- ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1))-a3*cos((6*%pi*n)/(N-1)) zeros(1,zp-N)];
- X_zpad_mags_ba = abs(fft(x_zpad.*ba));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
- title('Zastosowanie okna Blackmana-Harrisa')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Blackmana-Nuttalla wraz z dopełnieniem zerami
- a0=0.3635819;
- a1=0.4891775;
- a2=0.1365995;
- a3=0.0106411;
- ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1))-a3*cos((6*%pi*n)/(N-1)) zeros(1,zp-N)];
- X_zpad_mags_ba = abs(fft(x_zpad.*ba));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
- title('Zastosowanie okna Blackmana-Nuttalla')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
- //wprowadzamy model okna Flat top wraz z dopełnieniem zerami
- a0=1.0;
- a1=1.93;
- a2=1.29;
- a3=0.388;
- a4=0.028;
- ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1))-a3*cos((6*%pi*n)/(N-1))+a4*cos((8*%pi*n)/(N-1)) zeros(1,zp-N)];
- X_zpad_mags_ba = abs(fft(x_zpad.*ba));
- bins=0:length(x_zpad)-1;
- scf()
- plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
- title('Zastosowanie okna Flat top')
- xlabel('Częstotliwość [Hz]')
- ylabel('Widmo amplitudowe X(n)')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement