2017-09-06 76 views
0

我正在使用来自Surge库的FFT功能。返回数组中的每个元素与什么相关?我怎么知道哪些频率对应哪些值?如何从FFT确定频率值

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

回答

2

通常对于FFT结果,数组索引对应于离散化频率“块”,并且该值仅仅是幅度。既然你可能想知道峰值频率而不是幅度,后者的确切值并不重要。

的一般步骤如下:

  1. 获取数组
  2. 得到数组的大小[1]
  3. 发现在阵列的最大值[1]
  4. 得到的索引最大值[3]
  5. 计算频率间隔= sampleRate/size [2]/2
  6. 计算最大频率=指数[4] *频率间隔
  7. 返回频率[6]
+2

是的。较短的答案只是第5步。请注意,实矢量的复数傅里叶变换是多余的,所以只需要返回幅度的前一半。你从频率零开始,然后每一步都是由(5)给出的频率间隔。绘制结果(或绝对值)以确保给定的库不会“滚动”或“旋转”结果向量总是一个好主意。在这种情况下,你会丢掉前半部分的结果,并使用下半场。 – roadrunner66

+0

sampleRate的单位是什么?是秒-1或赫兹 – scord

+0

赫兹是秒-1 =) – axelspark