IIR फ़िल्टर प्रत्यक्ष रूप 1 या 2 के रूप में लागू किया जा सकता है । लेकिन आप कैसे तय करते हैं कि किस फॉर्म का इस्तेमाल करना है? प्रत्येक का भला - बुरा क्या है?
IIR फ़िल्टर प्रत्यक्ष रूप 1 या 2 के रूप में लागू किया जा सकता है । लेकिन आप कैसे तय करते हैं कि किस फॉर्म का इस्तेमाल करना है? प्रत्येक का भला - बुरा क्या है?
जवाबों:
सबसे पहले, डायरेक्ट फॉर्म I और II कार्यान्वयन पर विकिपीडिया से थोड़ा सा ।
प्रत्यक्ष रूप में मुझे अधिक मेमोरी की आवश्यकता होती है, लेकिन यह कुछ हद तक सरल रणनीति है, और इसमें राउंड-ऑफ और अनुनाद समस्याओं की संभावना कम है।
प्रत्यक्ष प्रपत्र II में कम मेमोरी की आवश्यकता होती है, लेकिन इसमें असामान्य इंटरैक्शन, बड़ी संख्या और अधिक राउंड ऑफ एरर की क्षमता होती है। इसमें से कई को छोटे फिल्टर, विशेषकर 2 ऑर्डर फिल्टर को कैस्केडिंग करके कम किया जा सकता है।
थोड़ा दिनांकित लेकिन अधिक व्यापक उत्तर देने के योग्य हो सकता है, खासकर जब से डायरेक्ट फॉर्म II आपको बहुत परेशानी में डाल सकता है। सबसे पहले, कोई "एक आकार सभी फिट बैठता है" नहीं है और सबसे अच्छा विकल्प आपके विशिष्ट आवेदन और बाधाओं पर निर्भर करता है। आप जो विचार कर सकते हैं, वह है
इसलिए सारांश में ट्रांसपोज़्ड फॉर्म II अधिक बार सबसे अच्छा विकल्प नहीं है। कुछ निश्चित बिंदु परिदृश्यों में, विशेष रूप से अगर महत्वपूर्ण शोर समस्याएं हैं, तो प्रत्यक्ष प्रपत्र I बेहतर है क्योंकि यह त्रुटि स्पेक्ट्रम आकार देने जैसी चीजों के साथ अधिक आसानी से संवर्धित हो सकता है, आदि।
जब तक एक बहुत ही संसाधन-दुर्लभ प्रणाली के साथ आपका काम करना या अत्यधिक आवश्यकताएं नहीं हैं, तो वास्तव में यह व्यवहार में कोई मायने नहीं रखता है कि आप प्रत्यक्ष रूप से I या II चुनते हैं। उदाहरण के लिए, यदि आप पीसी या स्मार्टफोन पर सामान कर रहे हैं तो यह वास्तव में मायने नहीं रखता। व्यक्तिगत रूप से, मुझे फॉर्म I पसंद है।
वास्तविक मुद्दा आम तौर पर MIPS है और यदि आप एक निश्चित-बिंदु कार्यान्वयन की योजना बनाते हैं तो चीजें अधिक जटिल हो जाती हैं। उदाहरण के लिए, ARM पर आपका IIR फ़िल्टर अधिक MIPS का उपभोग करेगा यदि दोनों गुणांक और फ़िल्टर अवस्थाएँ 32-बिट हैं। राज्यों और गुणांक में 32 बिट्स एक आवश्यकता है यदि आपको उदाहरण के लिए बहुत कम कट-ऑफ आवृत्ति के साथ कम-पास फिल्टर को लागू करने की आवश्यकता है। उन मामलों में आप एक अलग प्रकार के फ़िल्टर का उपयोग कर सकते हैं, जैसे कि स्टेट-वैरिएबल फ़िल्टर।
संख्यात्मक अंतर जैसे तकनीकी अंतरों के अलावा, स्थिरता का मुद्दा भी है। जब डिजिटल फिल्टर में एक दूसरे के करीब पोल / शून्य जोड़े होते हैं, तो विभिन्न स्थानों पर आवृत्ति प्रतिक्रिया अस्थिर हो सकती है (आमतौर पर Nyquist के पास या शून्य के करीब पहुंचती है)।
जब संगीत अनुप्रयोगों के लिए IIR फ़िल्टर का उपयोग किया जाता है, तो फ़िल्टर की स्थिरता पर वास्तविक समय की पसंद का गहरा प्रभाव हो सकता है, जब फ़िल्टर पैरामीटर वास्तविक समय में संशोधित होते हैं (उदाहरण के लिए, कम पास फ़िल्टर पर कट-ऑफ आवृत्ति भिन्न)।
मेरे पास एक खुला स्रोत एप्लिकेशन है जो आपको अंतरों को सुनने की सुविधा देता है, जबकि समय-अलग-अलग मापदंडों जैसे कि कटऑफ आवृत्ति या शिखर लाभ, प्रत्येक निम्नलिखित बोधों में से:
परियोजना यहाँ है:
स्मृति, MIPS, शोर और स्थिरता के बारे में उपरोक्त टिप्पणियों के अलावा; एक और कारक है जिसे आमतौर पर अनदेखा किया जाता है। यह कारक रीसेट क्षमता है; जो मेरी अधिकांश स्थितियों में बहुत महत्वपूर्ण होता है।
डायरेक्ट फॉर्म II के कार्यान्वयन के साथ, विलंबित आउटपुट के लिए कोई राज्य नहीं हैं, अगर आप "5" कहने के लिए डायरेक्ट फॉर्म II फ़िल्टर "रीसेट" करते हैं, तो यह प्रारंभिक आउटपुट होने वाला नहीं है। मुझे लगता है कि यह काफी काउंटर होगा -संतुलित जिसके कारण सिमुलिंक का उपयोग करने पर कुछ गंभीर निराशा हुई है। इस कारण से मैं लगभग हमेशा एक डायरेक्ट फॉर्म I कार्यान्वयन का उपयोग करता हूं। दुर्भाग्य से सिमुलिंक केवल डायरेक्ट फॉर्म I का समर्थन करता है यदि आपके पास डीएसपी टूलबॉक्स है, और तब भी यह आपको इनपुट सिग्नल से प्रारंभिक शर्तें सेट करने की अनुमति नहीं देता है।