Использование getSpectrum() в библиотеке Libgdx
Я знаю, что первое, что вы делаете, это "искать его внутри документации", проблема в том, что документы не ясны об этом.
Я использую библиотеку, чтобы получить 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: спектр последнего FourierTransform.переадресованный вызов.
public float[] getRealPart ()
Returns: реальная часть последнего FourierTransform.переадресованный вызов.
общественные поплавок[] getImaginaryPart ()
Returns: мнимая часть последнего FourierTransform.вперед() вызов.
спасибо!
1 ответов
getSpectrum () возвращает абсолютные значения комплексных чисел.
он рассчитывается следующим образом
for (int i = 0; i < spectrum.length; i++) {
spectrum[i] = (float)Math.sqrt(real[i] * real[i] + imag[i] * imag[i]);
}