Matlab谱图/短时傅里叶变换函数的FFT方法

时间:2014-05-01 23:18:57

标签: matlab signal-processing fft spectrogram

我正在试图弄清楚MATLAB如何为其频谱图功能进行短时傅里叶变换(以及相关函数,如specave或Octave中的stft)。对我来说很奇怪的是,你可以独立地指定窗口的长度和FFT长度(输出频率的数量),而我可以预期这两者应该相等(因为FFT信号的长度是与原始信号的长度相同)。为了说明我的意思,这里是函数调用:

[S,F,T] =谱图(信号,使用winsize,overlapSize,fftSize,速率);

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

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

干杯

1 个答案:

答案 0 :(得分:1)

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

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