使用FFT从相同源的幅度差异

时间:2010-04-05 10:52:05

标签: fft processing audacity minim

我对使用FFT有疑问。将函数getBand(int i)Minim一起使用,我可以提取特定频率的幅度,并对其进行漂亮的映射。效果很好。

但是,这更像是一个好奇心问题。当我使用相同的频率观看从播放同一首歌两次提取的值两次(因此幅度应该相同)但我得到非常不同的值 - 为什么会这样?

0.0,0.0,0.0,0.0,0.0,0.08706585,0.23708777,0.83046436,0.74603105,0.30447206
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08706585,0.4790409,0.9608221,0.83046436,0.74603105

2 个答案:

答案 0 :(得分:3)

在两种情况下,您确定输入完全相同吗?如果您只是拍摄一首歌的随机片段,那么对于歌曲中的不同起点,FFT的输出将非常不同。

答案 1 :(得分:2)

mp3解码可能是片状的和/或fft例程的引入缓冲可能很复杂(系列之前的不同长度的静音)。 在这种情况下,看起来第二个输出中的导入大约大2步。

然后,如果执行fft的时间间隔长于fft窗口大小,则导入的差异可能导致fft窗口落在系列的完全不同的部分上,这可以解释为非常输出中稍后的不同值。

如果您可以增加'时间分辨率'(每个给定时间执行的ffts数量) - 或者增加fft窗口大小,那么情况应该更清楚,因此fft测量不是稀疏地完成的。理想情况下,它们应该重叠,然后我们才能期望匹配在步骤之外完成的扫描之间的模式。