【问题标题】:Methodology of FFT for Matlab spectrogram / short time Fourier transform functionsMatlab频谱图/短时傅里叶变换函数的FFT方法
【发布时间】:2014-05-01 23:18:57
【问题描述】:

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

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

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

我想知道的最终原因是为了确定频率的正确单位和缩放比例。

干杯

【问题讨论】:

    标签: matlab signal-processing fft spectrogram


    【解决方案1】:

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

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

    【讨论】:

    • 啊,那么频率分量的间距df就是rate/fftSize(我之前用的符号),最高频率永远是奈奎斯特频率(rate/2),正确?
    • 补充说明:补零可以看作是加窗的一种特殊情况,其中各个窗口系数设置为零。 @Sesquipedal:正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2012-08-21
    • 2016-06-19
    • 2021-07-12
    • 2012-05-18
    • 1970-01-01
    • 2012-10-14
    相关资源
    最近更新 更多