我在 C# 中有一个 FFT 算法,我在缓冲区中生成频率为 440、FS=1600 和窗口长度为 2048 的正弦波。
在将信号发送到 FFT 之前,我将窗口长度加倍并在缓冲区数据之间放置虚值(0es)。在 FFT 之后,我计算幅度并获取最大幅度的索引并将其乘以 bin 大小。它的工作原理是它返回类似 442 Hz 的东西 :)
现在我用 Matlab 将相同的生成正弦文件放入录制的 .wav 文件中。当我从 C# 运行 FFT 时,它返回 884 Hz 的两倍,正如我预期的那样。为什么?。
我用 Audacity 检查了 .wav 文件,他们得到了 440 的正确值。
那么任何想法为什么我得到双倍的价值?