取出均匀间隔的对数箱

时间:2012-08-07 16:06:58

标签: c audio-fingerprinting

我写了2048个信号样本的fft,结果是C中的1025个频率值。(丢弃其他1025个样本(即>n/2 samples))。

现在我必须从318到2000hz之间的这些频率值中取出32个均匀间隔的对数箱。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

This question告诉您如何确定FFT的每个结果代表的频率。然后,找出哪个频率进入哪个频段。然后,在每个箱内,组合该箱中频率的FFT结果。 (通常人们对频率所代表的能量感兴趣,由该频率的FFT结果的幅度表示。如果是这样,那么计算箱中每个结果的幅度并添加这些幅度以得到箱子的总和。)

如果你的对数间隔为n个,其中第一个bin以频率A开始,最后一个bin以频率B结束,则bin i(编号从0到n-1)从频率exp开始((ln(B) - LN(A))* I / N)* A。那个公式:

  • 取B和A的对数。
  • 取对数之间的距离(ln(B)-ln(A))。
  • 将该距离除以间隔(乘以i th 间隔的i / n)。
  • 将该距离从对数转换为频率(应用exp)。
  • 乘以A设置起点(撤消ln(A)的减法)。

因此,此公式为您提供每个垃圾箱的起点和终点,您可以使用它来分割垃圾箱。如果您想以2000 Hz开始最后一个箱而不是以2000 Hz结束,或者您希望将开始和结束箱中心设置为318 Hz和2000 Hz,而不是将它们精确地终止在这些频率上,则必须调整公式