2012-01-10 89 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