这只是我个人的理解,错误之处还请指正。
在我《如何理解DFT》的文章中说到DFT和DTFT。这里就会有一个问题:
如果原始信号中有频率成分处于两个基本函数的频率之间,会怎么样呢?Fig.1(a)解释了答案,原始信号包含两路不同频率的正弦波,一路频率与基本函数匹配,一路频率不匹配。前者用一个点就能表示峰值,而后者则会出现一个峰值伴随着两个尾巴的频谱,即发生了谱泄露(拖尾)。可以理解峰值被相邻的基本函数“分摊”了。怎么解决这个问题呢?答案就是加窗,Fig.1(b)展示了汉明窗以后的频谱表现,发现两路正弦波的峰值形状更相似了,拖尾减少了,但是峰值的宽度变大了,也就是说加窗是谱泄露(拖尾)和频率分辨率(峰值宽度)之间的平衡。
我们从另一个角度来解释图(a)的拖尾效应。
假设有一个频率为
Fig.1(a)的就是Fig.2抽样的结果,如果抽样在波谷(信号频率与基本函数频率匹配),则可消除拖尾,如果抽样在波峰和波谷的某一点(信号频率在基本函数频率之间),则会形成各种形式的拖尾。
总结一下,现实中对信号片段做DFT,相当理论中对无限长的信号加窗,求DTFT,再抽样。也就是说,只要你求一个信号片段的DFT就会有泄露,泄露无法避免。
用matlab验证一下,对于一个频率为41.4的正弦波做128点FFT。
fs=128;
T=1;
N=fs*T;
t=(0:N-1)/fs;
a=20*sin(2*pi*41.4*t);
b=fft(a);
plot(abs(b)/N*2);axis([0,75,0,20]);
可以看到频率为41.4,幅值为20的正弦波的频谱的幅值并不是20,因为发生了泄露。