Использование 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]);
}