2012-05-30 23 views

回答

2

的FFT後,您需要採取幅度每個複雜的輸出紙盒的

magnitude = sqrt(re[i]*re[i] + im[i]*im[i]); 

頻率是關係到倉索引,i:

freq = i * Fs/N; 

其中Fs =採樣率(Hz),N = FFT大小。

如果您只是在尋找單音,然後找到幅度最大的bin索引,然後使用上述公式將此索引轉換爲頻率。請注意,您只需要檢查從1到N/2-1的bin索引。

+0

好的,這是有道理的。至於幅度,這是在0到1的範圍內?或者它會成爲像分貝那樣的權力或壓力的表達? – kernelK

+1

在這種情況下,數量級並不太重要,因爲您所尋找的只是一個高峯。一般而言,對於幅值爲1的輸入信號,FFT bin量值將具有N的值,其中N是FFT的大小。當你關心實際值時,你通常會按1/N進行縮放以彌補這一點。還要注意,你應該考慮在FFT之前應用窗函數。 –

1

Paul R.回答了每個FFT bin的中心頻率。但是請注意,您希望分析的音頻中的精確頻率可能不在任何FFT bin的中心。因此,您可能需要的是使用FFT的頻率估計算法,或者對於包含音樂或語音的音頻,可能使用與頻率估計不同的基音檢測/估計方法。