10

我知道您首先想到的是“在文档中查找”,但是文档并不清楚。

我使用该库来获取 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 和 getImaginary 的联合,但值都不同。也许,getSpectrum 的结果是复数,但它们的表示是什么?

我试过没有fft_cpx=fft.getSpectrum();,它似乎工作正常,但我想知道它是否真的有必要,getSpectrum()、getReal() 和 getImaginary() 之间有什么区别。

文档位于: http: //libgdx-android.com/docs/api/com/badlogic/gdx/audio/analysis/FFT.html

公共浮动[] getSpectrum()

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

公共浮动[] getRealPart()

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

公共浮动[] getImaginaryPart()

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

谢谢!

4

1 回答 1

1

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

是这样计算的

for (int i = 0; i < spectrum.length; i++) {
    spectrum[i] = (float)Math.sqrt(real[i] * real[i] + imag[i] * imag[i]);
}
于 2014-01-02T13:40:27.153 回答