在Libgdx库中使用getSpectrum()

问题描述 投票:10回答:1

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

我使用库来获取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()的虚部 致电。

谢谢!

java android libgdx fft spectrum
1个回答
1
投票

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

它是这样计算的

for (int i = 0; i < spectrum.length; i++) {
    spectrum[i] = (float)Math.sqrt(real[i] * real[i] + imag[i] * imag[i]);
}
© www.soinside.com 2019 - 2024. All rights reserved.