用fft对信号作频谱分析的程序
实验(1)
function shiyan1
x1=[1,1,1,1];
n1=0:3;
n2=4:7;
xa=n1+1;
xb=8-n2;
x2=[xa,xb];
xa1=4-n1;
xb1=n2-3;
x3=[xa1,xb1];
X18=fft(x1,8);
k1=0:8-1;
subplot(3,2,1);
stem(k1,abs(X18),'.'); axis([0,8,0,1.2*max(abs(X18))]);
title('8点DFT[x1]');ylabel('幅度');
X116=fft(x1,16);
k2=0:16-1;
subplot(3,2,2);
stem(k2,abs(X116),'.'); axis([0,16,0,1.2*max(abs(X116))]);
title('16点DFT[x1]');ylabel('幅度');
X28=fft(x2,8);
subplot(3,2,3);
stem(k1,abs(X28),'.'); axis([0,8,0,1.2*max(abs(X28))]);
title('8点DFT[x2]');ylabel('幅度');
X216=fft(x2,16);
subplot(3,2,4);
stem(k2,abs(X216),'.'); axis([0,16,0,1.2*max(abs(X216))]);
title('16点DFT[x2]');ylabel('幅度');
X38=fft(x3,8);
subplot(3,2,5);
stem(k1,abs(X38),'.'); axis([0,8,0,1.2*max(abs(X38))]);
title('8点DFT[x3]');ylabel('幅度');
X316=fft(x3,16);
subplot(3,2,6);
stem(k2,abs(X316),'.'); axis([0,16,0,1.2*max(abs(X316))]);
title('16点DFT[x3]');ylabel('幅度');
实验(2)
function shiyan2
n1=0:8-1;
n2=0:16-1;
x48=cos(pi/4*n1);
x58=cos(pi/4*n1)+cos(pi/8*n1); x416=cos(pi/4*n2);
x516=cos(pi/4*n2)+cos(pi/8*n2);
X48=fft(x48,8);
X416=fft(x416,16);
X58=fft(x58,8);
X516=fft(x516,16);
k1=0:8-1;
k2=0:16-1;
subplot(2,2,1);
stem(k1,abs(X48),'.'); axis([0,8,0,5]);
title('8点DFT[x4]');ylabel('幅度');
subplot(2,2,2);
stem(k2,abs(X416),'.'); axis([0,16,0,10]); title('16点DFT[x4]');ylabel('幅度');
subplot(2,2,3);
stem(k1,abs(X58),'.'); axis([0,8,0,10]);
title('8点DFT[x5]');ylabel('幅度');
subplot(2,2,4);
stem(k2,abs(X516),'.'); axis([0,16,0,10]); title('16点DFT[x5]');ylabel('幅度');
实验(3)
function shiyan3
Fs=64;T=1/Fs;
N1=16;N2=32;N3=64;
n1=0:N1-1;
n2=0:N2-1;
n3=0:N3-1;
x816=cos(8*pi*n1*T)+cos(16*pi*n1*T)+cos(20*pi*n1*T);
x832=cos(8*pi*n2*T)+cos(16*pi*n2*T)+cos(20*pi*n2*T);
x864=cos(8*pi*n3*T)+cos(16*pi*n3*T)+cos(20*pi*n3*T);
X816=fft(x816,16);
X816=fftshift(X816);
X832=fft(x832,32);
X832=fftshift(X832);
X864=fft(x864,64);
X864=fftshift(X864);
Tp=N1*T;F=1/Tp;
k=-N1/2:N1/2-1;fk=k*F;
subplot(3,1,1);stem(fk,abs(X816),'.'); title('16点DFTx8');xlabel('f(Hz)');ylabel('幅度');
Tp=N2*T;F=1/Tp;
k=-N2/2:N2/2-1;fk=k*F;
subplot(3,1,2);stem(fk,abs(X832),'.'); title('32点DFTX8');xlabel('f(Hz)');ylabel('幅度');
Tp=N3*T;F=1/Tp;
k=-N3/2:N3/2-1;fk=k*F;
subplot(3,1,3);stem(fk,abs(X864),'.'); title('64点DFTX8');xlabel('f(Hz)');ylabel('幅度');