2012-01-10 31 views
0

我想上使用jTransforms庫中的WAV文件做頻譜分析:Official Site在WAV文件上使用jTransforms庫?

但我對如何使用jTransforms WAV文件轉換成可接受的輸入爲FFT,我怎麼能顯示頻率的問題FFT後的頻譜?我搜索了谷歌周圍,發現我需要以某種方式將WAV文件轉換爲double[]或,然後我應該如何解釋輸出?

對不起,我對FFT很新,所以這個問題可能聽起來很愚蠢。非常感謝!

回答

2

我不知道你的圖書館,但我想他們有關於如何應用轉換的大量文檔。

關於解釋,如果您使用復變換,您可以將實部解釋爲相應頻率點的能量和虛擬相位的正弦曲線。 的功率譜密度(PSD)可以通過

real(fftData)*conj(fftData) 

其等於

abs(fftData^2) 

(所以可以通過複共軛相乘實部)來計算。

你可能需要考慮的一件事是重新調整你的fft輸出。一些算法將輸出與fftSize成比例。所以你將不得不乘以1/fftSize的輸出。

而最後一件事情,如果你不知道,你只需要採取fft輸出的一半,因爲光譜是對稱的。 中間bin(fftSize/2)通常是鏡像基頻,等於fftData [0]。這標誌着奈奎斯特頻率,這是您可以用給定的fftSize分析的最高頻率。 所以如果你想顯示頻率高達22kHz,請確保你的fftSize至少爲44k。

FFT有許多缺陷,因此請確保您閱讀了某些部分並瞭解您在那裏做了什麼。數學本身並不重要,如果你只是想使用它,所以你可能會跳過它們。

編輯:還有更多。考慮用錐形窗口(高斯,漢明,漢寧......)來加權輸入數據,以避免令人討厭的邊緣效應,如果你不把整個wav文件作爲輸入。否則,你會得到人造高頻到你的fft輸出中,而這些只是原來不存在的。

+0

感謝您的回答! – rexcfnghk 2012-04-03 04:21:58