如何从 FFT 确定频率值

How to determine frequencies values from an FFT

我正在使用 Surge 库中的 FFT 函数。 return 数组中的每个元素与什么相关?我如何知道哪些频率对应于哪些值?

例如,我试图在某个频率范围内找到峰值。

一般FFT结果,数组索引对应离散化的频率"block",数值就是幅度。由于您可能想知道峰值频率而不是幅度,因此后者的确切值并不那么重要。

一般步骤是:

  1. 获取数组
  2. 获取数组的大小[1]
  3. 求数组[1]中的最大值
  4. 获取最大值的索引[3]
  5. 计算频率间隔 = sampleRate / size [2] / 2
  6. 计算最大频率=索引[4]*频率间隔
  7. return频率[6]