IIR फ़िल्टर प्राप्ति का चयन करते समय मुझे किन कारकों पर विचार करना चाहिए?


16

IIR फ़िल्टर प्रत्यक्ष रूप 1 या 2 के रूप में लागू किया जा सकता है । लेकिन आप कैसे तय करते हैं कि किस फॉर्म का इस्तेमाल करना है? प्रत्येक का भला - बुरा क्या है?


इसके अलावा, GPU पर उन्हें लागू करने का सबसे अच्छा तरीका क्या है।
रॉय

2
@ ड्रेकिक, जीपीयू एक अलग गेम है। एक और quesiton की आवश्यकता है।
ट्रेवर बॉयड स्मिथ

जवाबों:


9

सबसे पहले, डायरेक्ट फॉर्म I और II कार्यान्वयन पर विकिपीडिया से थोड़ा सा ।

प्रत्यक्ष रूप में मुझे अधिक मेमोरी की आवश्यकता होती है, लेकिन यह कुछ हद तक सरल रणनीति है, और इसमें राउंड-ऑफ और अनुनाद समस्याओं की संभावना कम है।

प्रत्यक्ष प्रपत्र II में कम मेमोरी की आवश्यकता होती है, लेकिन इसमें असामान्य इंटरैक्शन, बड़ी संख्या और अधिक राउंड ऑफ एरर की क्षमता होती है। इसमें से कई को छोटे फिल्टर, विशेषकर 2 ऑर्डर फिल्टर को कैस्केडिंग करके कम किया जा सकता है।


2
या तो मामले में, आपको दूसरे क्रम के अनुभागों को समझना चाहिए।
ओलिवर चार्ल्सवर्थ

1
तो, संक्षेप में, क्या यह मेमोरी बनाम राउंड-ऑफ एरर ट्रेड-ऑफ है?
अनुस्मृति

2
सुपर कमजोर जवाब IMO। तकनीकी रूप से यह सवाल का जवाब देता है ... लेकिन केवल "तकनीकी रूप से"। मैं किसी भाषा में कुछ स्रोत कोड देखना चाहूंगा। मुझे पता है कि एफआईआर फ़िल्टर को कैसे लागू किया जाता है जो आसान है। आइए देखें IIR स्रोत कोड।
ट्रेवर बॉयड स्मिथ

2
इसके अलावा, प्रति नमूना प्रदर्शन किए गए गणितीय कार्यों के संदर्भ में, जो एक बेहतर कार्यान्वयन I या II है?
10

1
मुझे पता है कि एफआईआर फ़िल्टरिंग कैसे करना है। मुझे यह भी पता है कि I / II / III / IV का प्रत्यक्ष रूप क्या है। मुझे क्या करने का अनुभव नहीं है IIR: डिजाइन या कार्यान्वयन। मेरी मूल टिप्पणी बहुत रचनात्मक नहीं थी। मुझे कहना चाहिए "मुझे समझ में आया कि I-IV का प्रत्यक्ष रूप क्या है, क्या आप कृपया इस बारे में अधिक बात करेंगे कि आप IIR फ़िल्टर कैसे डिज़ाइन / कार्यान्वित करते हैं?"
ट्रेवर बोयड स्मिथ

9

थोड़ा दिनांकित लेकिन अधिक व्यापक उत्तर देने के योग्य हो सकता है, खासकर जब से डायरेक्ट फॉर्म II आपको बहुत परेशानी में डाल सकता है। सबसे पहले, कोई "एक आकार सभी फिट बैठता है" नहीं है और सबसे अच्छा विकल्प आपके विशिष्ट आवेदन और बाधाओं पर निर्भर करता है। आप जो विचार कर सकते हैं, वह है

  1. मेमोरी: डायरेक्ट फॉर्म II और ट्रांसपोज़्ड फॉर्म II थोड़ी कम स्टेट मेमोरी लेते हैं, फिर डायरेक्ट फॉर्म I और ट्रांसपोज़्ड फॉर्म I, लेकिन कैस्केडेड सेकंड-ऑर्डर सेक्शन में अंतर मामूली है
  2. MIPS: गुणक और परिवर्धन की संख्या के संदर्भ में, सभी चार कार्यान्वयन समान हैं। हालांकि विशिष्ट प्रोसेसर के निर्देश सेट के आधार पर, कार्यान्वयन दक्षता में महत्वपूर्ण अंतर हो सकते हैं। तो "यह निर्भर करता है"।
  3. फिक्स्ड प्वाइंट गुण: यह एक बड़ा अंतर बनाता है। मुख्य रूप से आपको यह सुनिश्चित करना होगा कि आपके राज्य चर अतिप्रवाह नहीं करते हैं, इसलिए आपको / आउटपुट और राज्य चर के बीच स्थानांतरण फ़ंक्शन का विश्लेषण करने की आवश्यकता है। यहां डायरेक्ट फॉर्म I और ट्रांसपोज़्ड फॉर्म II स्पष्ट विजेता हैं। राज्य चर + 106dB या उसके स्थान पर इनपुट और आउटपुट के लिए बाध्य हैं। उदाहरण के लिए प्रत्यक्ष प्रपत्र II में, इनपुट से राज्य में स्थानांतरण फ़ंक्शन केवल डंडे द्वारा दिया गया है। मैंने वास्तविक दुनिया के उदाहरण देखे हैं जहां यह वास्तव में लाभ के 100 डीबी से अधिक हो सकता है। यह निश्चित बिंदु कार्यान्वयन के लिए एक पूर्ण नहीं है।
  4. शोर: ट्रंकेशन और राउंड ऑफ एरर के संदर्भ में, सभी कार्यान्वयन लगभग समान हैं। 3 में उल्लिखित राज्य चर हस्तांतरण समारोह समस्या भी कुछ हद तक इसे प्रभावित करती है और मैंने 32-बिट फ्लोटिंग पॉइंट का उपयोग करते हुए भी डायरेक्ट फॉर्म II फिल्टर के साथ श्रव्य शोर मुद्दों को देखा है।

इसलिए सारांश में ट्रांसपोज़्ड फॉर्म II अधिक बार सबसे अच्छा विकल्प नहीं है। कुछ निश्चित बिंदु परिदृश्यों में, विशेष रूप से अगर महत्वपूर्ण शोर समस्याएं हैं, तो प्रत्यक्ष प्रपत्र I बेहतर है क्योंकि यह त्रुटि स्पेक्ट्रम आकार देने जैसी चीजों के साथ अधिक आसानी से संवर्धित हो सकता है, आदि।


यह एक अधिक व्यापक और बेहतर उत्तर है!
लोरेम इप्सम

2
मैंने आज पता लगाया - बहुत कठिन तरीके से - क्यों प्रत्यक्ष रूप मैं अपने आवेदन के लिए एक बेहतर विकल्प है। बहुत अच्छे उत्तर के लिए धन्यवाद!
अनसिम्तियाज

1

जब तक एक बहुत ही संसाधन-दुर्लभ प्रणाली के साथ आपका काम करना या अत्यधिक आवश्यकताएं नहीं हैं, तो वास्तव में यह व्यवहार में कोई मायने नहीं रखता है कि आप प्रत्यक्ष रूप से I या II चुनते हैं। उदाहरण के लिए, यदि आप पीसी या स्मार्टफोन पर सामान कर रहे हैं तो यह वास्तव में मायने नहीं रखता। व्यक्तिगत रूप से, मुझे फॉर्म I पसंद है।

वास्तविक मुद्दा आम तौर पर MIPS है और यदि आप एक निश्चित-बिंदु कार्यान्वयन की योजना बनाते हैं तो चीजें अधिक जटिल हो जाती हैं। उदाहरण के लिए, ARM पर आपका IIR फ़िल्टर अधिक MIPS का उपभोग करेगा यदि दोनों गुणांक और फ़िल्टर अवस्थाएँ 32-बिट हैं। राज्यों और गुणांक में 32 बिट्स एक आवश्यकता है यदि आपको उदाहरण के लिए बहुत कम कट-ऑफ आवृत्ति के साथ कम-पास फिल्टर को लागू करने की आवश्यकता है। उन मामलों में आप एक अलग प्रकार के फ़िल्टर का उपयोग कर सकते हैं, जैसे कि स्टेट-वैरिएबल फ़िल्टर।


1

संख्यात्मक अंतर जैसे तकनीकी अंतरों के अलावा, स्थिरता का मुद्दा भी है। जब डिजिटल फिल्टर में एक दूसरे के करीब पोल / शून्य जोड़े होते हैं, तो विभिन्न स्थानों पर आवृत्ति प्रतिक्रिया अस्थिर हो सकती है (आमतौर पर Nyquist के पास या शून्य के करीब पहुंचती है)।

जब संगीत अनुप्रयोगों के लिए IIR फ़िल्टर का उपयोग किया जाता है, तो फ़िल्टर की स्थिरता पर वास्तविक समय की पसंद का गहरा प्रभाव हो सकता है, जब फ़िल्टर पैरामीटर वास्तविक समय में संशोधित होते हैं (उदाहरण के लिए, कम पास फ़िल्टर पर कट-ऑफ आवृत्ति भिन्न)।

मेरे पास एक खुला स्रोत एप्लिकेशन है जो आपको अंतरों को सुनने की सुविधा देता है, जबकि समय-अलग-अलग मापदंडों जैसे कि कटऑफ आवृत्ति या शिखर लाभ, प्रत्येक निम्नलिखित बोधों में से:

  • डायरेक्ट फॉर्म I
  • प्रत्यक्ष प्रपत्र II
  • ट्रांसपोज़्ड डायरेक्ट फॉर्म I
  • ट्रांसपोज़्ड डायरेक्ट फॉर्म II
  • जाली का रूप
  • अवस्था चर

परियोजना यहाँ है:

https://github.com/vinniefalco/DSPFiltersDemo.git

https://github.com/vinniefalco/DSPFilters.git

स्क्रीनशॉट


1
आपने इसे कई बार पोस्ट किया है, और जब तक आपके उत्तर वास्तव में प्रश्नों के अनुरूप नहीं हैं, तब तक मैं स्पैम नीति लागू करने के लिए इच्छुक हूं। इनमें से कोई भी पोस्ट सीधे सवालों का जवाब नहीं देती है, और किसी उत्पाद को बढ़ावा भी देती है। उन्हें सीधे सवालों के जवाब देने के लिए संपादित करें या उन्हें हटा दिया जाएगा।
२३:३२

0

स्मृति, MIPS, शोर और स्थिरता के बारे में उपरोक्त टिप्पणियों के अलावा; एक और कारक है जिसे आमतौर पर अनदेखा किया जाता है। यह कारक रीसेट क्षमता है; जो मेरी अधिकांश स्थितियों में बहुत महत्वपूर्ण होता है।

डायरेक्ट फॉर्म II के कार्यान्वयन के साथ, विलंबित आउटपुट के लिए कोई राज्य नहीं हैं, अगर आप "5" कहने के लिए डायरेक्ट फॉर्म II फ़िल्टर "रीसेट" करते हैं, तो यह प्रारंभिक आउटपुट होने वाला नहीं है। मुझे लगता है कि यह काफी काउंटर होगा -संतुलित जिसके कारण सिमुलिंक का उपयोग करने पर कुछ गंभीर निराशा हुई है। इस कारण से मैं लगभग हमेशा एक डायरेक्ट फॉर्म I कार्यान्वयन का उपयोग करता हूं। दुर्भाग्य से सिमुलिंक केवल डायरेक्ट फॉर्म I का समर्थन करता है यदि आपके पास डीएसपी टूलबॉक्स है, और तब भी यह आपको इनपुट सिग्नल से प्रारंभिक शर्तें सेट करने की अनुमति नहीं देता है।

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