在Libgdx库中使用getSpectrum()

时间:2013-01-15 13:27:02

标签: java android libgdx fft spectrum

我知道你要做的第一件事是“在文档中寻找它”,问题是文档不清楚。

我使用库来获取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

  

public float [] getSpectrum()

     

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

     

public float [] getRealPart()

     

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

     

public float [] getImaginaryPart()

     

返回:最后一个FourierTransform.forward()的虚部   调用

感谢的!

1 个答案:

答案 0 :(得分:1)

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

计算方式如下

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