2013-01-15 9 views
10

So che la prima cosa che si sta facendo è "cercarla nella documentazione", il problema è che le documentazioni non sono chiare al riguardo.Uso di getSpectrum() nella libreria Libgdx

Io uso la biblioteca per ottenere FFT e ho iniziato da questa breve guida: http://www.digiphd.com/android-java-reconstruction-fast-fourier-transform-real-signal-libgdx-fft/

Il problema è che esso uso:

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

Sia "fft_cpx", "TMPi", "TMPR "Sono un vettore galleggiante. Mentre "tmpi" e "tmpr" sono usati per calcolare la grandezza, "fft_cpx" non viene usato di nuovo.

Ho pensato che getSpectrum() fosse unione di getReal e getImmaginary ma il valore è tutto diverso. Forse getSpectrum sono valori complessi, ma qual è la loro rappresentazione?

Provo senza questo linecode fft_cpx=fft.getSpectrum(); e sembra funzionare bene, ma mi piacerebbe sapere se è necessario e qual è la differenza tra getSpectrum() e getReal() o getImmaginary().

Qui è esso documentazioni: http://libgdx-android.com/docs/api/com/badlogic/gdx/audio/analysis/FFT.html

float pubblico [] getSpectrum()

Restituisce: lo spettro dell'ultima FourierTransform.forward) chiamata (.

float pubblico [] getRealPart()

Returns: la parte reale dell'ultima FourierTransform.forward) chiamata (.

float pubblico [] getImaginaryPart()

Returns: la parte immaginaria dell'ultimo FourierTransform.forward() chiamata.

Grazie!

risposta

1

getSpectrum() restituisce valori assoluti di numeri complessi.

Si calcola come questo

for (int i = 0; i < spectrum.length; i++) { 
    spectrum[i] = (float)Math.sqrt(real[i] * real[i] + imag[i] * imag[i]); 
} 
Problemi correlati