Matlab的STFT实现spectrogram()的最大频率分辨率是多少?


10

Matlab的spectrogram()功能计算信号的STFT。它描述其NFFT参数如下:

S = SPECTROGRAM(X,WINDOW,NOVERLAP,NFFT)指定用于计算离散傅立叶变换的频率点数。如果NFFT未指定,NFFT则使用默认值。

我是否正确,这NFFT仅是在频率分辨率和计算数量之间进行权衡?对于我的离线工作,无需节省周期。是否有的最大限制NFFT,例如由频谱泄漏或我应了解的任何其他问题强加的,或者我可以将该参数设置得尽可能高吗?

Answers:


5

FFT的长度是频率和时间分辨率之间的权衡。频谱图通常是通过对目标信号计算重叠的FFT来生成的。如果使FFT更长,则每个输出仓的有效带宽会变小,因此沿频率轴的分辨率会提高。可获得的频率分辨率的唯一限制因素是从信号获得的总观察时间。

但是,与此同时,您解析时间上本地化的功能的能力会减弱。考虑这一点的一种直观方法是将FFT视为复杂的下变频,然后进行积分和转储操作:

X[k]=n=0N1(x[n]ej2πnkN)

以这种方式查看它会使时间分辨率的损失更加明显。括号中的乘积将的频率下移,并且将所得信号积分到样本的窗口上。如果中有一个仅位于有限时间范围内的特征,则为x[n]2πnkNNx[n]N当FFT变大时,更多重叠的FFT将在其积分时间窗口内包含该时间段。因此,该特征将出现在光谱图图像的更多行中(假设时间沿Y轴)。然后,如果您减少该功能所在的频谱图的列(即频点),您会注意到一个更宽的,模糊的峰。因此,您解析功能开始的实际时间位置的能力较小。

您也很对,增加FFT长度确实需要更多的计算,这可能与实时应用有关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.