考虑到我感兴趣的频率范围(从300 Hz到3000 Hz),如何使用数据长度和我寻找的最小/最大频率来计算理想的窗口大小?
谢谢。
Kadir
@Kadir:
在进行离散傅里叶变换(DFT或FFT)之前,窗口化数据的目的是最小化泄漏谱,这种情况发生在您尝试对非周期性数据进行傅里叶变换时。
窗口化通过强制在序列的开始和结束处平滑地将数据强制为零,但不是在它们之前。缩短窗口会不必要地破坏信息。
因此,您的窗口长度应与样本序列的长度相匹配。例如,如果有1024个样本,则窗口长度应为1024。
如果您想要分辨率最高的频率为3千赫兹,请使用8192个或更多的样本,例如16384或32768个样本,在各种采样率下都可用。
此外,尝试不同的FFT算法、不同的采样长度和不同的窗口,包括Hann(Hanning),但也包括具有更好的旁瓣衰减的其他窗口,例如Blackman-Harris系列和Kaiser-Bessel系列等。
如果您的应用程序存在噪音,则可能需要在更好的噪声抑制窗口和更高的频谱分辨率窗口之间进行选择。因此,尝试不同的窗口是一个好主意,这样您就可以找到最适合您应用程序的窗口。
现在,使用每个设置(即每个窗口、采样长度、采样率等)写下您的结果,并寻找跨多个设置一致的结果。您将了解有关数据的许多信息,并且很可能找到解决问题的答案。
您可以使用Matlab进行此操作:http://www.mathworks.com/help/techdoc/ref/fft.html
或者使用此在线FFT频谱分析仪:http://www.sooeet.com/math/fft.php
别忘了在这里发布您的结果。
关键因素是在频率域中需要多少分辨率才能区分不同的元音。
分辨率为1 / T
,其中T
是FFT窗口的持续时间。
如果您采样了62.5毫秒,则如果您的FFT与采样间隔(1024个样本)相同,则最大分辨率为16 Hz(即每个FFT bin宽16 Hz)。
如果您使用更小的FFT,则分辨率显然会按比例变差。
例如,512点FFT只有32 Hz的分辨率。
10*log10(re*re+im*im)
)- 这应该会给您一个看起来不错的功率谱,具有分贝幅度刻度。 - Paul R