title('Phase—Frequency ');
x [k? cos(4. 某周期序列由3个频率组成: ] ? cos( 16 k ) 16 k ) ? cos( k ) ,27π9ππ利用FFT分析其频谱。如何选取FFT的点数N?此3个频率分别对应FFT计算结果X[m]中的哪些点?若选取的N不合适,FFT计算出的
频谱X[m]会出现什么情况? 解答:
%该周期序列的周期N=32,N=64,基频W0=p/16。
N=32; k=0:N-1;
x=cos(pi*7/16*k)+cos(9*pi/16*k)+cos(8*pi/16*k); X=fft(x,N); subplot(4,1,1);
stem(k-N/2,abs(fftshift(X))); ylabel('Magnitude');
xlabel('Frequency (rad)');
title('Magnitude—Frequency N=32 '); subplot(4,1,2);
stem(k-N/2,angle(fftshift(X))); ylabel('Phase'); xlabel('Frequency (rad)');
title('Phase—Frequency N=32'); N=64; k=0:N-1;
x=cos(pi*7/16*k)+cos(9*pi/16*k)+cos(8*pi/16*k); X=fft(x,N); subplot(4,1,3);
stem(k-N/2,abs(fftshift(X))); ylabel('Magnitude'); xlabel('Frequency (rad)');
title('Magnitude—Frequency N=64 '); subplot(4,1,4);
stem(k-N/2,angle(fftshift(X))); ylabel('Phase'); xlabel('Frequency (rad)');
title('Phase—Frequency N=64');
若N选取不合适,则无法区分频率
5. 某离散序列 析其频谱。
(1) 对x[k]做64点FFT,绘出信号频谱,能分辨出其中的两个频率吗?
(2) 对x[k]补零到256点后计算FFT,能分辨出其中的两个频率吗? (3) 选用非矩形窗计算FFT,能够分辨出其中的两个频率吗? (4) 若不能够很好地分辨出其中的两个频谱,应采取哪些措施? 解答:
(1)、该周期序列的周期N=64,基频W0=p/15 N=64;
k=0:N-1;
2π2.3πx[k]?cos(k)?0.75cos( 15 15 k ),
? 63 0 ? k ,利用FFT分
x=cos(pi*2/15*k)+0.75*cos(2.3*pi/15*k); X=fft(x,N); subplot(2,1,1);
stem(k-N/2,abs(fftshift(X))); ylabel('Magnitude'); xlabel('Frequency (rad)');
title('Magnitude—Frequency N=64 '); subplot(2,1,2);
stem(k-N/2,angle(fftshift(X))); ylabel('Phase'); xlabel('Frequency (rad)');
title('Phase—Frequency N=64');
(2)对x[k]补零到256点后计算FFT
N=256;
k=0:N-1;
x=cos(pi*2/15*k)+0.75*cos(2.3*pi/15*k); X=fft(x,N); subplot(2,1,1);
stem(k-N/2,abs(fftshift(X)));
ylabel('Magnitude'); xlabel('Frequency (rad)');
title('Magnitude—Frequency N=256'); subplot(2,1,2);
stem(k-N/2,angle(fftshift(X))); ylabel('Phase'); xlabel('Frequency (rad)');
title('Phase—Frequency N=256');
(3)
Hanning:
N=64; k=0:N-1;
w=1/2*(1-cos(2*pi*k/(N-1)));
x=cos(2*pi/15*k).*w+0.75*cos(2.3*pi/15*k).*w; X=fft(x,N); subplot(2,1,1);
stem(k,abs(fftshift(X)));
ylabel('Magnitude'); xlabel('Frequency (rad)'); subplot(2,1,2);
stem(k,angle(fftshift(X)));