我知道您在想的第一件事是“在文档中查找”,但是文档尚不清楚。
我使用该库获取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/