एफआईआर फ़िल्टर डिज़ाइन: विंडो बनाम पार्क्स मैकलेलन और कम से कम वर्ग


21

क्या पार्क-मैक्कलन (पीएमसीसी के रूप में यहां संक्षिप्त रूप में) या कम पास फिल्टर के एफआईआर फिल्टर डिजाइन के लिए कम से कम एल्गोरिदम पर विंडो दृष्टिकोण का उपयोग करने के लिए कोई लाभ हैं? आज की कम्प्यूटेशनल शक्ति के साथ यह मान लें कि एल्गोरिदम की जटिलता स्वयं एक कारक नहीं है।

यह प्रश्न PMcC की तुलना Least Squares से नहीं कर रहा है, लेकिन विशेष रूप से अगर उन एल्गोरिदमों के बजाय किसी भी विंडो FIR डिज़ाइन तकनीक का उपयोग करने का कोई कारण है, या उन एल्गोरिदम द्वारा डिज़ाइन किए गए डिज़ाइन को फ़िल्टर करने के लिए विंडोिंग तकनीकें थीं और क्या किया गया था?

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

यहाँ छवि विवरण दर्ज करें


2
मेरा सुझाव है कि कैसर की कमी की तुलना में sinc करने के लिए firpm()और करने के लिए कर सकते हैं firls()
रॉबर्ट ब्रिस्टो-जॉनसन

जवाबों:


16

मैं सहमत हूं कि विंडोिंग फ़िल्टर डिज़ाइन विधि अब सबसे महत्वपूर्ण डिज़ाइन विधियों में से एक नहीं है, और यह वास्तव में ऐसा हो सकता है कि पारंपरिक पाठ्यपुस्तकों में इसे ओवररेज़ किया गया है, शायद ऐतिहासिक कारणों से।

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

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

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

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

मैं आपको दिखाता हूं कि इस तरह की तुलना अक्सर देखने के लिए की जा सकती है जिस तरह से उन्हें देखना चाहते हैं। नीचे दिए गए चित्र में मैं firls.mकैसर विंडो (लाल) का उपयोग करते हुए विंडो विधि के साथ डिजाइन किए गए कम पास के फिल्टर के लिए Matlab / Octave फ़ंक्शन (नीला) के साथ डिज़ाइन किए गए कम से कम इष्टतम इष्टतम कम पास फिल्टर की तुलना करता हूं ।

यहाँ छवि विवरण दर्ज करें

आंकड़े से, कोई भी निष्कर्ष निकाल सकता है कि विंडोिंग द्वारा डिज़ाइन किया गया फ़िल्टर न्यूनतम वर्गों के इष्टतम फ़िल्टर की तुलना में थोड़ा बेहतर है। यह निश्चित रूप से गैर-समझदारी है क्योंकि हमने "बेहतर" को परिभाषित नहीं किया है, और कम से कम चौकोर फिल्टर का एक छोटा सा मतलब चुकता सन्निकटन त्रुटि होना चाहिए । हालाँकि, आप इसे सीधे आकृति में नहीं देखते हैं। वैसे भी, यह सिर्फ मेरे दावे का समर्थन करने के लिए है कि इस तरह की तुलना करते समय बहुत सावधान और स्पष्ट होना चाहिए।

संक्षेप में, विशुद्ध रूप से व्यावहारिक कारणों के लिए डीएसपी छात्रों के लिए सीखने के लिए उपयोगी होने के अलावा, मुझे लगता है कि 1970 के बाद से तकनीकी प्रगति के बावजूद, विंडोिंग विधि का उपयोग कुछ व्यावहारिक परिदृश्यों में उचित हो सकता है, और मुझे नहीं लगता कि बहुत जल्द ही बदल जाएगा।


अच्छा जवाब मैट- युगल स्पष्टीकरण / प्रश्न: जटिलता के बारे में, क्या आप एक वास्तविक उदाहरण के साथ आ सकते हैं? मैं इसे कार्यान्वयन के साथ एक समस्या के रूप में देख सकता हूं, लेकिन गुणांक के साथ आने में मैं एक कारण के बारे में नहीं सोच सकता हूं कि मैं एक अवर मंच (इसलिए मेरा प्रश्न) पर डिजाइन करूंगा। तुलना के संबंध में, सबसे कम-वर्ग स्पष्ट रूप से बेहतर है; उसी तरंग और संक्रमण के लिए, आपको बेहतर स्टॉप बैंड क्षीणन मिलता है। मैंने दो से मेल करने के लिए पासबैंड की चौड़ाई बढ़ा दी थी; यह किनारा थोड़ा बड़ा है, जहां मैंने मिलान करना बंद कर दिया है, लेकिन निष्कर्ष निकालने के करीब पहुंच सकता है।
दान बोशेन

2
@DanBoschen: बेशक, ज्यादातर मामलों में डिजाइन ऑफ़लाइन किया जाता है, और जटिलता कोई मुद्दा नहीं है। हालाँकि, मैं उन अनुप्रयोगों में आ गया हूँ जहाँ फ़िल्टर को अर्ध-वास्तविक समय में पुन: डिज़ाइन करने की आवश्यकता होती है (जो कि एक किरणकारी अनुप्रयोग था), इसलिए आपके पास जटिलता का मुद्दा है।
मैट एल।

1
और एक खिड़की डिजाइन की तुलना में इष्टतम डिजाइन द्वारा नल की संख्या की वास्तविक बचत के लिए, मैंने जो परिणाम देखे हैं वे अक्सर निराशाजनक हैं। अक्सर सिर्फ 1 या 2 नल, जो कई कार्यान्वयन के लिए बहुत अंतर नहीं करते हैं।
मैट एल।

1
ठीक है, ऑफ़लाइन डिज़ाइन के लिए और यदि संख्यात्मक स्थिरता कोई समस्या नहीं है (उस विशिष्ट डिज़ाइन के लिए, सामान्य तौर पर यह एक समस्या बनी हुई है), तो विंडोिंग उपयोगी नहीं होगी। लेकिन सामान्य तौर पर, हम हमेशा ऑफ़लाइन डिज़ाइनों पर भरोसा नहीं कर सकते हैं, और इससे भी महत्वपूर्ण बात यह है कि हम हमेशा संख्यात्मक समस्याओं से बच नहीं सकते हैं। इसलिए मुझे लगता है कि 'अप्रचलित' शब्द अभी भी थोड़ा मजबूत है।
मैट एल।

3
बहुत सही कहा। याद रखने वाली बात यह है कि इंजीनियरिंग एक कार्यान्वयन खोजने के बारे में है जो आपकी आवश्यकताओं को पूरा करने के लिए पर्याप्त है। खिड़की की विधि लागू करने के लिए सरल है और हमेशा काम करती है। अन्य विधियों में अधिक जटिल कार्यान्वयन हैं और ऐसे मामले हो सकते हैं जहां वे काम करने के लिए मुश्किल हैं। मैंने कई प्रणालियों के साथ काम किया है जिन्हें मक्खी पर फिल्टर डिजाइन करने की आवश्यकता होती है, और उन स्थितियों के लिए विंडो विधि गो-टू है।
जेसन आर

7

संबंधित एफआईआर फिल्टर को चलाने के लिए पर्याप्त रूप से शक्तिशाली प्रोसेसर पर फ्लाई पर विंडो सिनक फिल्टर को अनुकूल रूप से उत्पन्न किया जा सकता है। विंडो सिनक फिल्टर को परिमित समयबद्ध समय में उत्पन्न किया जा सकता है।

कुछ सरल विंडो वाले Sinc फिल्टर की पीढ़ी को कोड की कुछ पंक्तियों में पूरी तरह से वर्णित किया जा सकता है (और मालवेयर इत्यादि के लिए निरीक्षण किया जा सकता है) , बनाम कुछ अपारदर्शी टूलबॉक्स का अंधा उपयोग।

खरोंच से एक PMCC फिल्टर जनरेटर कोड करने के लिए आवश्यक की तुलना में, एक खिड़की Sinc फिल्टर की व्याख्या करने के लिए कम पूर्व अपेक्षित गणित पृष्ठभूमि की आवश्यकता है।

एक PMCC फ़िल्टर की आवृत्ति प्रतिक्रिया में बराबर तरंगें समय डोमेन में कलाकृतियों का कारण बन सकती हैं जो एक साधारण विंडो फ़िल्टर द्वारा निर्मित कलाकृतियों की तुलना में अलग (और शायद कम वांछनीय) हैं।


1
हां अच्छा बिंदु @ hotpaw2, पासबैंड रिपल इंटरसेम्बल इंटरफेरेंस (अनुगामी और अग्रणी इकोस) की ओर जाता है। धन्यवाद
डैन बॉशेन

2
हमने पार्क-मैकलेलन के बारे में बात की और 2003 में comp.dsp पर इको पोस्ट किया । एलेक्सी ल्यूकिन ने एक न्यूनतम MATLAB उदाहरण पोस्ट किया: f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)जो ऑक्टेव में भी चलता है। एक व्याख्या यह है कि बहुत ही कठोर फिल्टर के साथ तरंगों को नियमित रूप से एक कोसाइन के समान हो सकता है। आवृत्ति डोमेन कोसाइन के समतुल्य समय डोमेन दो आवेगी इको होगा।
ओली निमीतालो

6

मैं यहाँ एक डिज़ाइन किए गए डिज़ाइन का एक लाभ और पार्क्स-मैकक्लेन से समान लाभ प्राप्त करने के लिए एक चाल दिखाऊँगा।

हाफ-बैंड, क्वार्टर-बैंड आदि के लिए, फ़िल्टरिंग विंडो स्केल्ड सिनक फ़ंक्शन के टाइम-डोमेन शून्य को बरकरार रखती है, जो कि प्रोटोटाइप आदर्श कम-पास फ़िल्टर है। फ़िल्टर के कम्प्यूटेशनल लागत को कम करने, गुणांक में शून्य समाप्त हो जाते हैं। आधे-बैंड फ़िल्टर के लिए विंडो डिज़ाइन, प्रत्येक को गुणांक 0 के साथ एक फिल्टर देता है सिवाय मध्य गुणांक के (जो कि माना भी जाता है):

sinc
चित्रा 1. 2 के एक कारक द्वारा क्षैतिज रूप से फैला हुआ सिनस फ़ंक्शन 2 के लाभ के साथ प्रोटोटाइप आधा-बैंड कम-पास फिल्टर है, जो 2 के कारक द्वारा अपसंस्कृति के लिए उपयुक्त है।

हालाँकि, पार्क-मैकलेलन / रेमीज़ को एक समान लाभ देने के लिए डिज़ाइन करके एक ही लाभ दिया जा सकता है, जिसमें एक समान संख्या में नल के साथ फ़िल्टर भी होता है, जिसमें केवल एक एकता लाभ पास बैंड परिभाषित होता है। प्राप्त गुणांक को एक लंबे फ़िल्टर के विषम गुणांक के रूप में उपयोग किया जाता है। लंबे समय तक फ़िल्टर का मध्य गुणांक 1 पर सेट होता है और दूसरे में भी गुणांक होता है। इस फ़िल्टर में पास बैंड और स्टॉप बैंड्स में 2 और पास में सममित रिपल का लाभ होता है। पायथन में:

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
c0 = signal.remez(14, [0, 3500.0/8000], [1])
c = np.zeros(c0.size*2-1)
c[0::2] = c0
c[c0.size-1] = 1
freq, response = signal.freqz(c)
plt.semilogy(freq/(2*np.pi), np.abs(response))
plt.show()
plt.plot(range(-c0.size+1, c0.size, 1), c, 'x')
plt.grid(True)
plt.show()

चित्र 2।
चित्रा 2. आधा बैंड फिल्टर के गुणांक को परोक्ष रूप से पायथन के उपयोग से बनाया गया है scipy.signal.remez

चित्र तीन।
चित्रा 3. परोक्ष रूप से उपयोग करके डिज़ाइन किए गए आधे-बैंड फ़िल्टर के चुंबक आवृत्ति प्रतिक्रिया भूखंड scipy.signal.remez

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