离散序列DFT分析:谱峰分辨与补零方法

已知一离散序列x(n) = cos((2πnf_1)⁄f_s ) + cos((2πnf_2)⁄f_s ),其中,f_1=200Hz,f_2=205Hz,f_s=1000Hz。

1) 当0≤n≤128时,计算x(n)的DFT,并画出其波形图和幅频图;

f1 = 200;
f2 = 205;
fs = 1000;
n = 0:128;
x = cos(2*pi*f1*n/fs) + cos(2*pi*f2*n/fs);
X = fft(x);
figure;
subplot(2,1,1);
stem(n,x);
title('x(n)波形图');
xlabel('n');
ylabel('x(n)');
subplot(2,1,2);
stem(n,abs(X));
title('x(n)幅频图');
xlabel('n');
ylabel('|X(n)|');

2) 如果两个谱峰在幅频图中不能被分辨出来,通过编程验证是否可以通过补零的方式(将上面的x(n)补零使其序列加长至0≤n≤512)分辨出2个谱峰,并解释其原因;

n2 = 0:512;
x2 = [x zeros(1,384)];
X2 = fft(x2);
figure;
subplot(2,1,1);
stem(n2,x2);
title('补零后的x(n)波形图');
xlabel('n');
ylabel('x(n)');
subplot(2,1,2);
stem(n2,abs(X2));
title('补零后的x(n)幅频图');
xlabel('n');
ylabel('|X(n)|');

3) 当0≤n≤512时,计算x(n)的DFT,并画出其波形图和幅频图。

n3 = 0:512;
x3 = cos(2*pi*f1*n3/fs) + cos(2*pi*f2*n3/fs);
X3 = fft(x3);
figure;
subplot(2,1,1);
stem(n3,x3);
title('x(n)波形图');
xlabel('n');
ylabel('x(n)');
subplot(2,1,2);
stem(n3,abs(X3));
title('x(n)幅频图');
xlabel('n');
ylabel('|X(n)|');

解释:

通过补零的方式可以提高频谱分辨率,这是因为补零后DFT的点数增加,导致频域的采样点增多,从而使得两个原本距离很近的谱峰能够被分辨出来。

结论:

通过对离散序列进行DFT分析,并利用补零方法可以有效地提高频谱分辨率,从而更加准确地识别信号中的频率成分。

离散序列DFT分析:谱峰分辨与补零方法

原文地址: https://www.cveoy.top/t/topic/oNfp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录