2012-11-06 32 views
0

我不明白爲什麼音量定義的頻率不符合預期。定義頻率上的音量(C#)

我用幾個指定的頻率依次發送聲音給我的麥克風。然後我做我的麥克風緩衝區的FFT。在FFT退出時,我有一個複數的數組。要知道聲音所定義的頻率的音量,我看我的陣列,該陣列中元素的個數,我得到這樣:

MyFrequency = n*SamplingRate/SizeOfArray. 

接下來,我得到的複數幅度

(sqrt(Re^2+Im^2) 

如果我是對的,這顯示了這個頻率上的音量。但是這個數值會根據頻率而變化很大。如果我錯了,請向我解釋我需要怎麼做才能糾正我的錯誤。如果我是對的,請解釋一下爲什麼這個值變化如此之大。

回答

1

您是否在FFT之前應用了window function?如果不是,那麼你會看到spectral leakage的影響,並且如果原始頻率是採樣率的精確的子倍數,則在任何給定的FFT bin處的幅度將僅是正確的。

+0

不,我不使用窗口功能。例如,如果我使用漢寧窗,我不會提出這個問題嗎? – EXTRAM

+0

是的 - 這就是整個觀點 - 在FFT之前需要一個窗口函數。 「漢寧」(馮漢)窗口應該沒問題。 –