मैं सहमत हूं कि विंडोिंग फ़िल्टर डिज़ाइन विधि अब सबसे महत्वपूर्ण डिज़ाइन विधियों में से एक नहीं है, और यह वास्तव में ऐसा हो सकता है कि पारंपरिक पाठ्यपुस्तकों में इसे ओवररेज़ किया गया है, शायद ऐतिहासिक कारणों से।
हालांकि, मुझे लगता है कि कुछ स्थितियों में इसके उपयोग को उचित ठहराया जा सकता है। मैं इस बात से सहमत नहीं हूं कि कम्प्यूटेशनल जटिलता अब कोई मुद्दा नहीं है। यह प्लेटफॉर्म पर निर्भर करता है। हमारे डेस्कटॉप कंप्यूटर पर बैठना और एक फिल्टर डिजाइन करना, हमें वास्तव में जटिलता के बारे में चिंता करने की आवश्यकता नहीं है। हालांकि, विशिष्ट प्लेटफार्मों पर और ऐसी स्थितियों में जहां डिजाइन को अर्ध-वास्तविक समय में करने की आवश्यकता होती है, कम्प्यूटेशनल जटिलता एक मुद्दा है, और एक सरल उप-रूपी डिजाइन तकनीक को एक इष्टतम तकनीक पर पसंद किया जाएगा जो कि बहुत अधिक जटिल है। एक उदाहरण के रूप में, मैंने एक बार बीमफॉर्मिंग के लिए एक प्रणाली पर काम किया था जहां फिल्टर (बीमफॉर्मर) को मक्खी पर फिर से डिजाइन करने की आवश्यकता होगी, और इसलिए कम्प्यूटेशनल जटिलता वास्तव में एक मुद्दा था।
मुझे यह भी विश्वास है कि कई व्यावहारिक स्थितियों में हमें इष्टतम और दत्तक ग्रहण डिज़ाइन के बीच के अंतर के बारे में चिंता करने की आवश्यकता नहीं है। यह और भी अधिक सच हो जाता है अगर हमें निर्धारित गुणांक वाले अंक-अंक के अंकगणित और अंकगणितीय संचालन के निर्धारित परिणामों का उपयोग करने की आवश्यकता होती है।
एक अन्य मुद्दा इष्टतम फिल्टर डिजाइन विधियों और उनके कार्यान्वयन की संख्यात्मक स्थिरता है। मैं कई मामलों में आया हूं, जहां पार्क-मैकलीन एल्गोरिथ्म (मुझे कहना चाहिए, मैंने जिस कार्यान्वयन का उपयोग किया है) ने बस अभिसरण नहीं किया। ऐसा तब होगा जब विनिर्देश बहुत अधिक समझ में नहीं आता है, लेकिन यह पूरी तरह से उचित चश्मा के साथ भी हो सकता है। कम से कम वर्गों के डिजाइन की विधि के लिए भी यही सच है जहां रैखिक समीकरणों की एक प्रणाली को हल करने की आवश्यकता होती है, जो एक अशिक्षित समस्या बन सकती है। इन परिस्थितियों में, विंडोिंग विधि आपको कभी निराश नहीं करेगी।
विंडो विधि और कम से कम वर्गों के डिजाइन के बीच आपकी तुलना के बारे में एक टिप्पणी: मुझे नहीं लगता कि यह तुलना विंडोिंग विधि पर कम से कम वर्गों की किसी भी सामान्य श्रेष्ठता को दर्शाती है। सबसे पहले, आप स्टॉप बैंड क्षीणन को देखते हैं, जो कि दोनों विधियों में से किसी के लिए कोई डिज़ाइन लक्ष्य नहीं है। विंडोिंग विधि किसी भी मायने में इष्टतम नहीं है, और कम से कम चौकोर डिजाइन स्टॉप बैंड ऊर्जा को कम करता है, और स्टॉप बैंड रिपल आकार के बारे में बिल्कुल भी परवाह नहीं करता है। जो देखा जा सकता है, वह यह है कि विंडो डिज़ाइन का पास बैंड एज कम से कम चौकोर डिज़ाइन से बड़ा होता है, जबकि स्टॉप बैंड का किनारा छोटा होता है। नतीजतन, विंडो द्वारा डिज़ाइन किए गए फ़िल्टर के संक्रमण बैंड की चौड़ाई छोटी है, जिसके परिणामस्वरूप उच्च स्टॉप बैंड रिपल्स होंगे। संक्रमण बैंड की चौड़ाई में अंतर छोटा हो सकता है, लेकिन फ़िल्टर गुण इस पैरामीटर के लिए बहुत संवेदनशील हैं। इसमें कोई संदेह नहीं है कि बैंड ऊर्जा को रोकने के लिए कम से कम वर्ग फिल्टर को फ़िल्टर करता है, लेकिन यह रिपल के आकार के रूप में देखना आसान नहीं है। और यह सवाल बना रहता है कि क्या वास्तव में यह अंतर व्यावहारिक अनुप्रयोग में फर्क करेगा।
मैं आपको दिखाता हूं कि इस तरह की तुलना अक्सर देखने के लिए की जा सकती है जिस तरह से उन्हें देखना चाहते हैं। नीचे दिए गए चित्र में मैं firls.m
कैसर विंडो (लाल) का उपयोग करते हुए विंडो विधि के साथ डिजाइन किए गए कम पास के फिल्टर के लिए Matlab / Octave फ़ंक्शन (नीला) के साथ डिज़ाइन किए गए कम से कम इष्टतम इष्टतम कम पास फिल्टर की तुलना करता हूं ।
आंकड़े से, कोई भी निष्कर्ष निकाल सकता है कि विंडोिंग द्वारा डिज़ाइन किया गया फ़िल्टर न्यूनतम वर्गों के इष्टतम फ़िल्टर की तुलना में थोड़ा बेहतर है। यह निश्चित रूप से गैर-समझदारी है क्योंकि हमने "बेहतर" को परिभाषित नहीं किया है, और कम से कम चौकोर फिल्टर का एक छोटा सा मतलब चुकता सन्निकटन त्रुटि होना चाहिए । हालाँकि, आप इसे सीधे आकृति में नहीं देखते हैं। वैसे भी, यह सिर्फ मेरे दावे का समर्थन करने के लिए है कि इस तरह की तुलना करते समय बहुत सावधान और स्पष्ट होना चाहिए।
संक्षेप में, विशुद्ध रूप से व्यावहारिक कारणों के लिए डीएसपी छात्रों के लिए सीखने के लिए उपयोगी होने के अलावा, मुझे लगता है कि 1970 के बाद से तकनीकी प्रगति के बावजूद, विंडोिंग विधि का उपयोग कुछ व्यावहारिक परिदृश्यों में उचित हो सकता है, और मुझे नहीं लगता कि बहुत जल्द ही बदल जाएगा।
firpm()
और करने के लिए कर सकते हैंfirls()
।