0

我试图弄清楚 MATLAB 如何对其频谱图函数(以及相关函数,如 Specgram 或 Octave 中的 stft)进行短时傅里叶变换。让我感到好奇的是,您显然可以独立指定窗口的长度和 FFT 长度(输出频率的数量),而我原以为这两者应该相等(因为 FFT 信号的长度是与原始信号的长度相同)。为了说明我的意思,这里是函数调用:

[S,F,T]=频谱图(信号,winSize,overlapSize,fftSize,rate);

winSize 是要(单独)进行 FFT 的子间隔的长度,而 fftSize 是输出中给出的频率分量的数量。当这些不相等时,Matlab 是否会进行插值以产生所需数量的频率区间?

最终我想知道的原因是我可以确定适当的单位和频率缩放。

干杯

4

1 回答 1

1

可以将信号的窗口段补零到更长的向量,以使用更长的 FFT。频率缩放将由 FFT 的长度(和信号采样率)决定。窗口大小和窗口公式将根据峰分离能力确定有效分辨率。

为什么要这样做?某些 FFT 大小可以比其他大小更有效地计算(稍微或很多,取决于使用的 FFT 库)。此外,更长的 FFT 将计算更多的点或 bin,从而在可能更平滑的频谱结果中产生更高密度的插值点。

于 2014-05-01T23:46:19.110 回答