2017-09-06 116 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