2013-01-15 40 views
10

我知道你所要做的第一件事是“在文档中寻找它”,问题是文档不清楚它。在Libgdx库中使用getSpectrum()

我使用该库来获得FFT和我从这个简短的指南开始: http://www.digiphd.com/android-java-reconstruction-fast-fourier-transform-real-signal-libgdx-fft/

的问题是,它使用:

fft.forward(array); 
    fft_cpx=fft.getSpectrum(); 
    tmpi = fft.getImaginaryPart(); 
    tmpr = fft.getRealPart(); 

两个 “fft_cpx”, “TMPI”,“TMPR “是浮动向量。虽然“tmpi”和“tmpr”用于计算幅度,但“fft_cpx”不再使用。

我认为getSpectrum()是getReal和getImmaginary的联合,但是值都是不同的。 也许getSpectrum是复杂的值,但它们的表示是什么?

我尝试没有这行代码fft_cpx=fft.getSpectrum();它似乎工作正确,但我想知道是否有必要和getSpectrum()和getReal()或getImmaginary()之间的区别是什么。

这里是单证: http://libgdx-android.com/docs/api/com/badlogic/gdx/audio/analysis/FFT.html

公众持股量[] getSpectrum()

返回:最后FourierTransform.forward()调用的频谱。

公众持股量[] getRealPart()

返回:最后FourierTransform.forward()调用的实部。

公共浮[] getImaginaryPart()

返回:最后FourierTransform.forward() 呼叫的虚部。

谢谢!

回答

1

getSpectrum()返回复数的绝对值。

它是这样计算

for (int i = 0; i < spectrum.length; i++) { 
    spectrum[i] = (float)Math.sqrt(real[i] * real[i] + imag[i] * imag[i]); 
}