2013-01-15 10 views
10

wiem, że pierwszą rzeczą, którą są thinging jest „szukać wewnątrz dokumentacji”, problemem jest to, że dokumentacja nie jest jasne, o tym.Korzystanie z getSpectrum() w libgdx biblioteki

używam biblioteki uzyskać FFT i zacząłem z tego krótkiego przewodnika: http://www.digiphd.com/android-java-reconstruction-fast-fourier-transform-real-signal-libgdx-fft/

Problemem jest to, że używać:

fft.forward(array); 
    fft_cpx=fft.getSpectrum(); 
    tmpi = fft.getImaginaryPart(); 
    tmpr = fft.getRealPart(); 

Zarówno "fft_cpx", "tmpi", „tmpr "są wektorami pływającymi. Podczas gdy "tmpi" i "tmpr" są używane do obliczania wielkości, "fft_cpx" nie jest ponownie używane.

Myślałem, że getSpectrum() była unia getReal i getImmaginary ale wartości są różne. Może getSpectrum to złożone wartości, ale jaka jest ich reprezentacja?

Próbuję bez tego kodu linku fft_cpx=fft.getSpectrum(); i wydaje się działać dobrze, ale chciałbym wiedzieć, czy to konieczne i jaka jest różnica między getSpectrum() i getReal() lub getImmaginary().

Oto ona dokumentacje: http://libgdx-android.com/docs/api/com/badlogic/gdx/audio/analysis/FFT.html

public float [] getSpectrum()

Powroty: widmo ostatniego FourierTransform.forward() połączenia.

public float [] getRealPart()

Powroty: część rzeczywista ostatniej FourierTransform.forward() połączenia.

public float [] getImaginaryPart()

Powroty: część urojona ostatniego FourierTransform.forward() rozmowy.

Thank głównej!

Odpowiedz

1

getSpectrum() zwraca wartości absolutnych liczbach zespolonych.

To jest obliczana jak ten

for (int i = 0; i < spectrum.length; i++) { 
    spectrum[i] = (float)Math.sqrt(real[i] * real[i] + imag[i] * imag[i]); 
} 
Powiązane problemy