基于DFT的谱分析

基于DFT的谱分析(参考实验)

问题分析

1.序列直接做DFT和补零做DFT有什么区别?
2.什么是频域的物理分辨率,什么是频域的分析分辨率?
3.为什么说补零作DFT只能提高频域的分析分辨率而不能提高物理分辨率?
4.为什么说提高频域的物理分辨率的唯一办法是增加记录长度?
5.当对有限长的序列做DFT时
【1】加窗与不加窗有什么区别?
【2】加不同形状的窗再做DFT,又有什么区别?
【3】我怎么知道在某个情况下应该选择那种窗函数?
频谱泄露的仿真代码;
N = 64 ; % vector length(N为信号采样的长度)
idx = [0:N-1].' ; % index column vector
f0 = 1E3 ; % sine signal freq, in Hz(f0为正弦频率)
fs = 32E3 ; % sample rate, in Hz(fs为采样频率)
x1 = sin(2*pi*f0/fs*idx); % sampled sine signal
figure ; % open new figure
subplot(2,2,1:2) ;
set(gca,'fontsize',14) ;
stem(x1) ; % plot(x1)
grid on ; % draw grid on figure
title1_str = sprintf(...
'Sampled Sine Signal, Frequency %dHz, Sample rate %dHz', f0, fs);
title(title1_str, 'fontsize',14);
y1 = fft(x1) ;
y1_abs = abs(y1) ;
subplot(2,2,3); stem(y1_abs,'LineWidth',1,'MarkerSize',6) ;
grid on; set(gca,'fontsize',12) ;
title('DFT Amplitude in Linear scale', 'fontsize',14) ;
y1_abs_dB = 20*log10(y1_abs) ;
min_y1 = min(y1_abs_dB) ;
subplot(2,2,4) ;
stem(y1_abs_dB, 'LineWidth',1,'MarkerSize',6,'BaseValue',min_y1);
grid on; set(gca,'fontsize',12) ;
title('DFT Amplitude in dB scale', 'fontsize',14) ;

通过改变信号矢量的长度和正弦信号的频率来观察连续正弦信号频谱的谱线(理想情况下应是两根笔直的谱线)。
思考:对一个连续时间信号进行采样,对信号的有限长样点进行DFT的结果,并不总是和该信号在连续时间域的频谱一致,从上面的实验可以看出,似乎只要是有限长采样中包含了整数个周期的信号样点,DFT的结果就和连续域频谱非常一致。然而这为我们带来新的问题,当我们要分析一个有限带宽信号的频谱成分时,我们是不可能让有限长的信号采样里恰好包含了所有频率成分的整数个周期。尤其是当这个信号的频率成分非常丰富的时候。接下来我们要做两件事情:
【1】分析一下,为什么非整数个周期的信号采样的DFT结果会“走样”
【2】如何才能让非整数个周期的信号采样的DFT结果和信号在连续时间域的频谱尽量的“相似”,如果的确存在某种方法,那么这种方法是有代价的么?

频谱泄露的分析

对于DFT的结果不是两根笔直的谱线,这种现象我们称作“频谱泄露”。准确的说叫做“本来在某些频率位置上的能量,在分析结果中泄露到了其它的频率位置上”。

猜你喜欢

转载自blog.csdn.net/wyh135792/article/details/79950490