我有2个100%相同的WAVE文件我转换为FFT。覆盖它们我得到了一个完美的匹配。
但是,如果我在其中一个数据的开头切掉一个非帧大小的块,则FFT不匹配(从末尾对齐)。
我猜这是因为帧内包含的频率。如果频率在两帧之间划分,则与两帧中的频率相比,如果它集中在一帧中,它将显示出较低的能量。
如何补偿/绕过这种影响?
答案 0 :(得分:1)
唯一确切的方法是对数据进行IFFT(假设一个无损的初始窗口),然后重新窗口并使用新的偏移重新对其进行FFT。最好只制作一组FFT帧,每个帧都有不同的初始偏移量。
答案 1 :(得分:1)
您可能希望在计算FFT之前应用窗口函数。
http://www.google.com/search?q=windowing+fft
http://en.wikipedia.org/wiki/Discrete_Fourier_transform:
“使用DFT意味着分析的有限段是一个 周期信号无限延长的周期;如果不是这样的话 实际上,必须使用窗口函数来减少 光谱中的人工制品。 “
我认为你是在正确的轨道上将信号分解成重叠的帧但是你需要考虑你的匹配标准(找出一些启发式,例如3个主要频率),帧的大小(太小而你我会错过较低频率,太高而你的分辨率较低等等。做一些研究,我相信很多人已经解决了这个问题并published papers。
答案 2 :(得分:0)
为什么在切掉其中一个样本后,你会期望傅里叶变换的结果是相同的?我不确定你要补偿的是什么,这是预期的行为。
如果您要比较两个样本以查看它们在“签名”中的差异,那么您可能希望规范化DFT的结果。对每个频率仓中的所有能量值求和,然后将每个仓中的值除以该总和,使得结果中所有能量的总和为1.允许您比较两个不同的样本,无论长度如何
请注意,这只是一种标准化DFT的方法,可能是过度简化的方法。还有无数其他人。根据您的输入数据以及您打算使用它做什么,日志标准化可能优于线性标准化。