0

我在 C# 中有一个 FFT 算法,我在缓冲区中生成频率为 440、FS=1600 和窗口长度为 2048 的正弦波。

在将信号发送到 FFT 之前,我将窗口长度加倍并在缓冲区数据之间放置虚值(0es)。在 FFT 之后,我计算幅度并获取最大幅度的索引并将其乘以 bin 大小。它的工作原理是它返回类似 442 Hz 的东西 :)

现在我用 Matlab 将相同的生成正弦文件放入录制的 .wav 文件中。当我从 C# 运行 FFT 时,它返回 884 Hz 的两倍,正如我预期的那样。为什么?。

我用 Audacity 检查了 .wav 文件,他们得到了 440 的正确值。

那么任何想法为什么我得到双倍的价值?

4

1 回答 1

-1

我想通了,似乎我没有正确读取 wav 文件。

于 2013-05-06T14:03:35.503 回答