Matlab 的spectrogram()
函数计算信号的 STFT。它描述了它的NFFT
论点如下:
S = SPECTROGRAM(X,WINDOW,NOVERLAP,NFFT)
指定用于计算离散傅里叶变换的频点数。如果NFFT
未指定,NFFT
则使用默认值。
我是否正确,因为这NFFT
只是频率分辨率和计算次数之间的权衡?对于我的离线工作,无需保存周期。是否有任何最大限NFFT
制,例如由频谱泄漏或我应该知道的任何其他问题强加,或者我可以将该参数设置为尽可能高吗?
Matlab 的spectrogram()
函数计算信号的 STFT。它描述了它的NFFT
论点如下:
S = SPECTROGRAM(X,WINDOW,NOVERLAP,NFFT)
指定用于计算离散傅里叶变换的频点数。如果NFFT
未指定,NFFT
则使用默认值。
我是否正确,因为这NFFT
只是频率分辨率和计算次数之间的权衡?对于我的离线工作,无需保存周期。是否有任何最大限NFFT
制,例如由频谱泄漏或我应该知道的任何其他问题强加,或者我可以将该参数设置为尽可能高吗?
FFT 的长度是频率和时间分辨率之间的折衷。频谱图通常是通过计算感兴趣信号上的重叠 FFT 来生成的。如果使 FFT 更长,则每个输出 bin 的有效带宽会变小,因此沿频率轴的分辨率会提高。您可以获得的频率分辨率的唯一限制因素是您从信号中获得的总观察时间。
但是,与此同时,您解决时间本地化的功能的能力会降低。考虑这一点的一种直观方法是将 FFT 视为一个复杂的下转换,然后是一个集成和转储操作:
以这种方式查看它会使时间分辨率的损失更加明显。括号中的乘积将的频率向下移动了,结果信号在个样本的窗口上进行积分。如果中有一个特征只位于有限的时间跨度内,那么作为变得更大,更多重叠的 FFT 将在其积分时间窗口内包含该时间段。因此,该特征将出现在频谱图图像的更多行中(假设时间沿 Y 轴)。如果您随后削减该特征所在的频谱图的列(即频率区间),您会注意到一个更宽的、模糊的峰值。因此,您解析要素开始的实际时间位置的能力较弱。
您也对,增加 FFT 长度确实需要更多计算,这可能与实时应用程序相关。