0

我正在尝试实现 FFT,我想问一下我所做的是否正确。我将 GSL(GNU 科学图书馆)用于 FFT 函数。我一直在阅读有关 FFT 的教程,但我仍然想请人验证我是否朝着正确的方向前进。

这是我通过网络材料提出的方法:

The input is a list of the amplitudes of a sin wave generated 
in audacity at 440Hz (A).  

The sample rate is 44100

# FFT points: 1024

有人可以解释如何选择 FFT 点的数量吗?或者它是否重要。我可能忽略了它,但我似乎找不到选择这个数字的方法。
编辑:我认为命名这个 FFT 窗口更合适,因为你在样本上滑动一个窗口 1024 点以找到频率。

 bin size = 44100 / 1024 = 43.066

运行 FFT 后,我有另一个幅度列表,并且基于它们所在的 bin,即正在检测的频率,对吗?所以为了找到生成信号的频率,我想找到最高峰?

A bin is defined as a peak if and only if the bin has an amplitude greater than 
2 bins to the left and 2 bins to the right.

这种方法是否在获取输入信号频率的正确轨道上?

4

1 回答 1

2

单独的 FFT 不能可靠地识别音高,因为音高可能与峰值频率不同。对于音高,您想研究音高估计算法,其中一些使用 FFT 作为过程的一部分,但许多不使用。

至于使用 FFT 进行频谱估计,FFT 越长,频率上的 FFT bin 间隔越近,如果被估计的频率在窗口期间是固定的,这很有用。

于 2012-03-05T08:31:03.290 回答