我知道您在想的第一件事是“在文档中查找”,但是文档尚不清楚。

我使用该库获取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”都是浮点 vector 。尽管使用“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()返回复数的绝对值。

像这样计算

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

关于java - 在Libgdx库中使用getSpectrum(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14338791/

10-09 08:28