एक स्पेक्ट्रोग्राम बनाना


10

मैं इस कार्य के लिए तर्क बाहर काम करने की कोशिश कर रहा है, और KissFFT स्रोत पैकेज का उपयोग करने की योजना तेजी से फूरियर परिणत करने के लिए। कृपया मुझे बताएं कि क्या यह सही लगता है:

  1. एक एफएफटी संरचना आवंटित करें, अर्थात। खिड़की का आकार मैं kiss_fft_alloc(N,0,NULL,NULL) कहाँ Nउपयोग कर रहा हूँ। इनपुट बफर प्रकार के Nतत्वों की एक सरणी होगी kiss_fft_scalar। आउटपुट बफर प्रकार के N/2 + 1तत्वों की एक सरणी होगी kiss_fft_cpx
  2. Nपीसीएम नमूनों की डिकोड (खिड़की का आकार) संख्या।
  3. प्रत्येक पीसीएम नमूने के लिए, औसत प्रत्येक चैनल के आयाम (अहस्ताक्षरित नमूने) और पैमाने को 0 से 2 (65536.0 से विभाजित करें), परिणाम को इनपुट बफर में संग्रहीत करें।
  4. इनपुट बफर पर विंडोिंग (यानी हैनिंग) करें।
  5. इनपुट बफर पर तेजी से फूरियर रूपांतरण करें, आउटपुट बफर में भंडारण करें। चूंकि मैं वास्तविक मानों को इनपुट के रूप में उपयोग कर रहा हूं, इसलिए मैं उपयोग कर सकता हूं kiss_fftr()
  6. के लिए N/2उत्पादन मूल्यों, तब्दील डेटा के वर्ग परिमाण प्राप्त करने और निम्नलिखित फार्मूले के साथ डीबी पैमाने पर करने के मूल्यों परिवर्तित: 10 * log10 (re * re + im * im)
  7. N/2चरण 6 से मान प्लॉट करें ।
  8. इनपुट बफ़र की पहली छमाही को त्यागें, अगले (विंडो आकार / 2) पीसीएम नमूनों को डिकोड करें और डेटा को स्केलिंग और विंडोिंग करें। यह प्रभावी रूप से इनपुट विंडो को स्लाइड करना चाहिए और संसाधित पीसीएम नमूनों पर गणित को फिर से करने से बचना चाहिए।
  9. चरण 5 तक लूप करें, जब तक सभी नमूने संसाधित नहीं हो जाते, तब तक इन चरणों को दोहराएं।
  10. से उपयोग की गई स्मृति को मुक्त करें kiss_fft_alloc()

यह सुझाव दिया गया था कि एफएफटी प्रदर्शन करने से पहले मैं इनपुट विंडो से एक मूल्य घटाता हूं, ताकि परिणामी डीसी मूल्य में शून्य का परिमाण हो। क्या मुझे इनपुट डेटा से औसत या औसत घटाना चाहिए?

इसके अलावा, खिड़की के आकार का चयन करते समय मुझे किन बातों पर विचार करना चाहिए? कि इसके अलावा यह KissFFT के निर्देशों के अनुसार के रूप में सम संख्या हो गया है, वहाँ एक छोटी सी खिड़की आकार यानी उपयोग करते हुए, के लिए एक लाभ है। क्या यह बेहतर ग्राफ प्रदान करेगा? मुझे लगता है कि एक बड़ी खिड़की का आकार एफएफटी की संख्या को कम करता है जिसे निष्पादित किया जाना चाहिए, क्या यह एक बड़ी खिड़की के आकार का उपयोग करने का एकमात्र लाभ है?

एक्स

किसी भी और सभी मार्गदर्शन के लिए अग्रिम धन्यवाद।

जवाबों:


8

मुझे बहुत अच्छा लग रहा है। चरण 3 में, हालांकि, आप वास्तव में सिग्नल को 1 से 1 तक स्केल करना चाहते हैं, अन्यथा आप डीसी जोड़ रहे हैं। आपने मीनिंग को घटाते हुए उल्लेख किया है - मैं एक स्पेक्ट्रोग्राम के लिए ऐसा करने की सलाह नहीं दूंगा, क्योंकि यह प्रभावी रूप से डीसी को फ़िल्टर कर रहा है, जो कि यह होने पर स्पेक्ट्रोग्राम दिखाना चाहता है।

विंडो का आकार चुनना सभी के बारे में है। एक बड़ी विंडो आपको शार्प फ्रिक्वेंसी रेजोल्यूशन देगी, लेकिन ब्लरियर टाइम रेजोल्यूशन। एक छोटी खिड़की आपको इसके विपरीत देगी: तेज समय संकल्प लेकिन धब्बा आवृत्ति संकल्प। खिड़की के आकार का उपयुक्त विकल्प उस डेटा पर निर्भर करेगा जिसे आप विश्लेषण करने की कोशिश कर रहे हैं। आमतौर पर यह केवल 2 की शक्ति होगी क्योंकि एफएफटी 2 की शक्तियों को पसंद करते हैं। अंगूठे का एक सभ्य नियम यह है कि आपकी खिड़की कम से कम लगभग दो बार होनी चाहिए जब तक कि सबसे कम आवृत्ति की अवधि आप सटीक रूप से सक्षम होना चाहते हैं संकल्प।

आप आश्चर्यचकित हो सकते हैं कि क्या इस ट्रेडऑफ़ के साथ बेहतर व्यवहार करना संभव है, और इसके लिए तकनीकें हैं: वे आम तौर पर कई अलग-अलग एफएफटी आकारों के साथ कंप्यूटिंग स्पेक्ट्रोग्राम शामिल करते हैं, और उन्हें जोड़ते हैं। इस वेबपृष्ठ पर कुछ अच्छी दृश्य जानकारी है: http://www.izotope.com/tech/aes_adapt/

यदि आपकी खिड़की का आकार बहुत छोटा है, तो दो बहुत करीबी आवृत्तियाँ एक दूसरे से अप्रभेद्य हो सकती हैं क्योंकि वे दोनों एक ही एफएफटी बिन में समाप्त होती हैं। यदि आपकी खिड़की का आकार बहुत बड़ा है, तो समय में दो करीबी घटनाएं संयुक्त हो सकती हैं, या एक तेज क्षणिक क्रमिक हमले में बदल सकती हैं। यह देखने के लिए कि मैंने कुछ तरीकों के लिए पोस्ट किए गए वेबपेज को देखें।

एक बड़े विंडो का आकार जरूरी नहीं कि एफएफटी की संख्या कम हो। आपने थोड़े समय के फूरियर रूपांतरण का उपयोग करके एक स्पेक्ट्रोग्राम की गणना करने के लिए चुना है जहां एफएफटी आकार का आधा ओवरलैप है। यदि आप चाहते थे तो आप एक उच्च ओवरलैप कारक का उपयोग कर सकते हैं। विंडो का आकार चुनना समय / आवृत्ति ट्रेडऑफ बनाने की तुलना में अधिक है कि आपको कितने एफएफटी की गणना करनी है। एक स्पेक्ट्रोग्राम (या किसी भी एसटीएफटी) को डिजाइन करने में, आप अपने विंडो आकार, और हॉप आकार , ब्लॉक के बीच की दूरी को स्वतंत्र मापदंडों के रूप में चुनने के बारे में सोच सकते हैं ।

जब आप इसे प्लॉट करते हैं, तो समय आमतौर पर एक्स-एक्सिस पर होता है, आवृत्ति y- एक्सिस पर होती है (आमतौर पर एक लॉग स्केल, मेल स्केल, आदि, एक रैखिक पैमाने के बजाय), और फिर परिमाण को रंग की तीव्रता के साथ दर्शाया जाता है, अर्थात बहुत गहरे रंग छोटे परिमाण के अनुरूप होते हैं और बहुत चमकीले रंग बड़े परिमाण के अनुरूप होते हैं।


आपका लिंक मृत प्रतीत होता है। क्या आप इसे अपडेट कर सकते हैं?
डैनियल वुल्फ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.