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

Matlab谱图/短时傅里叶变换函数的FFT方法,matlab,signal-processing,fft,spectrogram,Matlab,Signal Processing,Fft,Spectrogram,我试图弄清楚MATLAB是如何对其频谱图函数(以及相关函数,如specgram,或八度stft)进行短时傅里叶变换的。令我好奇的是,你显然可以独立地指定窗口的长度和FFT长度(输出频率的数量),而我希望这两个应该相等(因为FFT信号的长度与原始信号的长度相同)。为了说明我的意思,下面是函数调用: [S,F,T]=频谱图(信号、winSize、overlapSize、fftSize、速率) winSize是要(单独)进行FFT’d的子间隔长度,fftSize是输出中给定的频率分量数。当这些不相等时

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

[S,F,T]=频谱图(信号、winSize、overlapSize、fftSize、速率)

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

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


Cheers

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


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

Ah,因此频率分量的间隔df将是rate/fftSize(在我之前使用的符号中),最高频率将始终是Nyquist频率(rate/2),正确吗?附加说明:零填充可以被视为加窗的一种特殊情况,其中相应的窗系数设置为零@倍半踏板:正确。