2013-01-15 15 views
10

私はあなたが「文書の中でそれを探す」ことを最初に知っていますが、問題はそれに関する文書が明確ではないということです。LibgdxライブラリのgetSpectrum()の使用

私は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なしで試してみるとうまくいくようですが、必要かどうか、getSpectrum()とgetReal()、getImmaginary()の違いは何ですか? http://libgdx-android.com/docs/api/com/badlogic/gdx/audio/analysis/FFT.html

を公共フロート[] getSpectrum()

戻り値:最後のFourierTransform.forward()呼び出しのスペクトルここで

はそれがドキュメンテーションです。

公共フロート[] getRealPart()

戻り値:最後のFourierTransform.forward()呼び出しの実部。

公共フロート[] getImaginaryPart()

戻り値:最後のFourierTransform.forward() コールの虚部。

ありがとうございます!

答えて

1

getSpectrum()は、複素数の絶対値を返します。

それは、この

for (int i = 0; i < spectrum.length; i++) { 
    spectrum[i] = (float)Math.sqrt(real[i] * real[i] + imag[i] * imag[i]); 
} 
のように計算されます