सी

2010-06-17 14 views
14

में FFTW का उपयोग करके पोर्टऑडियो से नमूने से आवृत्ति जानकारी निकालने के लिए कैसे मैं एक प्रोग्राम बनाना चाहता हूं जो पोर्टऑडियो (मैंने यह हिस्सा किया है) का उपयोग करके ऑडियो डेटा रिकॉर्ड करेगा और फिर उस रिकॉर्ड किए गए ऑडियो की आवृत्ति जानकारी प्रदर्शित करेगा (अभी के लिए, मैं नमूने के समूह के प्रत्येक समूह की औसत आवृत्ति प्रदर्शित करना चाहता हूं)।सी

मैंने कुछ शोध किए हैं, मुझे पता है कि मुझे एक एफएफटी करने की आवश्यकता है। तो मैंने ऐसा करने के लिए लाइब्रेरी के लिए गुगल किया, सी में, और एफएफटीडब्ल्यू पाया।

हालांकि, अब मैं थोड़ा खो गया हूं। मुझे उन नमूनों के साथ क्या करना चाहिए जो मैंने उनसे कुछ आवृत्ति जानकारी निकालने के लिए रिकॉर्ड किया था? मुझे किस तरह का एफएफटी उपयोग करना चाहिए (मुझे लगता है कि मुझे वास्तविक डेटा 1 डी की आवश्यकता होगी?)?

और एक बार जब मैं एफएफटी करता, तो मुझे डेटा से आवृत्ति जानकारी कैसे मिलती है?

संपादित करें: अब मुझे स्वत: सहसंबंध एल्गोरिदम भी मिला है। क्या यह बेहतर है? सरल?

बहुत पहले से धन्यवाद, और क्षमा करें, मुझे इसका कोई अनुभव नहीं है। मुझे उम्मीद है कि यह कम से कम थोड़ा सा समझ में आता है।

उत्तर

15

एक शक्ति स्पेक्ट्रम के लिए आपके ऑडियो नमूने बदलने के लिए:

  • आपके ऑडियो डेटा है अगर पूर्णांक डेटा तो चल बिन्दु
  • को परिवर्तित एक FFT आकार लेने (जैसे एन = 1024)
  • लागू एक window function अपने डेटा के एन नमूनों को (जैसे Hanning)
  • आकार एन के एक असली करने के लिए जटिल FFT का उपयोग आवृत्ति डोमेन डेटा उत्पन्न करने
  • अपने जटिल fr की भयावहता की गणना equency डोमेन डेटा (magnitude = sqrt(re^2 + im^2))
  • वैकल्पिक रूप से एक लॉग स्केल (डीबी) (magnitude_dB = 20*log10(magnitude))
+1

portaudio नाव प्रारूप में डेटा रिकॉर्ड करने की अनुमति देता है के लिए परिमाण परिवर्तित (32 बिट चल बिन्दु)। इसलिए मैं इस सुझाव के उपयोग को प्रोत्साहित करता हूं। – INS

+0

@ यूलियन: हां, यह संभवतः समझदारी करने योग्य बात होगी, मान लीजिए कि आपके पास पावर स्पेक्ट्रम उत्पन्न करने से पहले पूर्णांक प्रोसेसिंग नहीं है जिसे आप पूर्णांक डोमेन में करना चाहते हैं। –

+0

धन्यवाद, बस एक और, शायद बेवकूफ सवाल। मैंने सबकुछ गणना की है, लेकिन अब मान लें कि मैं जांचना चाहता हूं कि सिग्नल में 440 हर्ट्ज (मध्यम ए) आवृत्ति मौजूद है या नहीं। मैं उसको कैसे करू? – houbysoft