2013-01-15 34 views
10

मुझे पता है कि आप जो चीज कर रहे हैं वह है "दस्तावेज के अंदर इसकी तलाश करें", समस्या यह है कि दस्तावेज इसके बारे में स्पष्ट नहीं हैं।लिबडक्स लाइब्रेरी में 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 का संघ था और आकस्मिक है लेकिन मूल्य सभी अलग हैं। शायद प्राप्त स्पेक्ट्रम जटिल मूल्य हैं, लेकिन उनका प्रतिनिधित्व क्या है?

मैं इस लाइनकोड fft_cpx=fft.getSpectrum(); के बिना कोशिश करता हूं और यह सही काम करता है, लेकिन मुझे यह जानना है कि यह आवश्यक है या getSpectrum() और getReal() या getMamaginary() प्राप्त करने के बीच क्या अंतर है।()

रिटर्न 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]); 
} 
तरह गणना की जाती है

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^