2013-01-15 3 views
10

Ich weiß, das erste, was Sie thinging ist suchen Sie es in der Dokumentation, das Problem ist, dass Dokumentationen nicht klar darüber sind.Verwendung von getSpectrum() in Libgdx Bibliothek

Ich benutze die Bibliothek FFT zu bekommen, und ich begann von dieser kurzen Anleitung: http://www.digiphd.com/android-java-reconstruction-fast-fourier-transform-real-signal-libgdx-fft/

Das Problem ist, dass es verwendet werden:

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

Both "fft_cpx", "TMPI", „TMPR "sind Float-Vektor. Während "tmpi" und "tmpr" zur Berechnung der Größe verwendet werden, wird "fft_cpx" nicht erneut verwendet.

Ich dachte, dass getSpectrum() war Union of getReal und getImmaginary aber Wert sind alle unterschiedlich. Vielleicht getSpectrum sind komplexe Werte, aber was ist ihre Darstellung?

Ich versuche ohne diesen Linecode fft_cpx=fft.getSpectrum(); und es scheint Arbeit richtig, aber ich würde gerne wissen, ob es notwendig ist und was ist der Unterschied zwischen getSpectrum() und getReal() oder getImmaginary(). Hier

ist es Dokumentationen: http://libgdx-android.com/docs/api/com/badlogic/gdx/audio/analysis/FFT.html

public float [] getSpectrum()

Returns: das Spektrum des letzten FourierTransform.forward() -Aufruf.

public float [] getRealPart()

Returns: der Realteil des letzten FourierTransform.forward() -Aufruf.

public float [] getImaginaryPart()

Returns: der imaginäre Teil des letzten FourierTransform.forward() Anruf.

Danke!

Antwort

1

getSpectrum() liefert absolute Werte komplexer Zahlen.

Es ist wie dieser

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