我使用库来获取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是复杂的价值观,但它们的代表性是什么?
我尝试没有这个linecode fft_cpx = fft.getSpectrum();它似乎工作正常,但我想知道是否有必要,以及getSpectrum()和getReal()或getImmaginary()之间的区别是什么.
这是它的文件:
http://libgdx-android.com/docs/api/com/badlogic/gdx/audio/analysis/FFT.html
public float[] getSpectrum()
Returns: the spectrum of the last FourierTransform.forward() call.
public float[] getRealPart()
Returns: the real part of the last FourierTransform.forward() call.
public float[] getImaginaryPart()
Returns: the imaginary part of the last FourierTransform.forward()
call.
谢谢!
解决方法
它是这样计算的
for (int i = 0; i < spectrum.length; i++) { spectrum[i] = (float)Math.sqrt(real[i] * real[i] + imag[i] * imag[i]); }