सिग्नलों का थ्योरी बेन्गेर डिजिटल प्रोसेसिंग - थ्योरी और प्रैक्टिस , वह बिंदु वह जगह नहीं है जहाँ आपकी कट-ऑफ फ्रीक्वेंसी होती है, लेकिन आपको कितने क्षीणन की आवश्यकता है, सिग्नल में कितने रिप्ले आप को संरक्षित करना चाहते हैं और सह सकते हैं, सबसे महत्वपूर्ण बात, कैसे अपने संक्रमण को पास-से-स्टॉपबैंड (संक्रमण चौड़ाई) तक सीमित करना होगा।
मुझे लगता है कि आप एक रैखिक चरण फ़िल्टर चाहते हैं (हालांकि आप न्यूनतम विलंबता निर्दिष्ट करते हैं, मुझे नहीं लगता कि सामान्य रूप से एक न्यूनतम चरण फ़िल्टर एक अच्छा विचार है, जब तक कि आप अच्छी तरह से नहीं जानते कि आप अपने सिग्नल के बाद क्या करने जा रहे हैं) । उस स्थिति में, फ़िल्टर ऑर्डर (जो नलों की संख्या है) है
एन≈ २3लॉग10[ १10 δ1δ2]चरोंΔ च
साथ में
fsΔfδ1δ2 the sampling rate the transition width, ie. the difference between end of pass band and start of stop band the ripple in passband, ie. "how much of the original amplitude can you afford to vary" the suppresion in the stop band.
चलो कुछ नंबरों में प्लग करें! आपने कट-ऑफ आवृत्ति निर्दिष्ट की है , इसलिए मैं अभी आगे जाऊंगा और दावा करूंगा कि आपकी संक्रमण चौड़ाई आधे से अधिक नहीं होगी, इसलिए ।fs100Δf=fs200
एसडीआर / आरएफ प्रौद्योगिकी से आ रहा है, दमन के 60 डीबी आमतौर पर पूरी तरह से पर्याप्त है - हार्डवेयर, पागल लागत के बिना, अपने इनपुट से अवांछित संकेतों को रखने में बेहतर नहीं होगा , इसलिए, आइए, एक शानदार फिल्टर होने पर सीपीयू को बर्बाद न करें जो बेहतर है आपका हार्डवेयर क्या कर सकता है। इसलिए, ।δ2= - ६० डीबी = १०- 3
मान लें कि आप पासबैंड में 0.1% के आयाम भिन्नता के साथ रह सकते हैं (यदि आप अधिक के साथ रह सकते हैं, तो दमन की आवश्यकता को कम सख्त बनाने पर भी विचार करें)। यह ।δ1= 10- 4
इसलिए, इसमें प्लगिंग करें:
एनटॉमी का फिल्टर≈ २3लॉग10[ १10 δ1δ2]चरोंΔ च= २3लॉग10[ १10 ⋅ 10- 4⋅ १०- 3]चरोंचरों200= २3लॉग10[ १10 ⋅ 10- 7]200= २3लॉग10[ १10- 6]200= २3( लॉग10106)200= २3⋅ 6 ⋅ 200=800 ।
तो अपने 200 नल के साथ, आप बहुत दूर हैं, यदि आप अपने फ़िल्टर में एक अत्यंत संकीर्ण पास बैंड का उपयोग करते हैं जैसे कि मैंने मान लिया था।
ध्यान दें कि यह नहीं करता है एक समस्या होने के लिए - सब से पहले, एक 800-नल फिल्टर है डरावना है, लेकिन स्पष्ट रूप से, केवल पहली नजर में:
- जैसा कि मैंने StackOverflow में इस उत्तर पर परीक्षण किया है : CPU का आजकल तेजी से चल रहा है , यदि आप किसी के सीपीयू-अनुकूलित एफआईआर कार्यान्वयन का उपयोग करते हैं। उदाहरण के लिए, मैंने GNU रेडियो के एफएफटी-एफआईआर कार्यान्वयन का उपयोग किया, जो ऊपर दिए गए फिल्टर विनिर्देश की रूपरेखा के साथ है। मुझे प्रति सेकंड 141 मिलियन नमूनों का प्रदर्शन मिला - जो आपके लिए पर्याप्त हो सकता है या नहीं। तो यहां हमारा प्रश्न-विशिष्ट परीक्षण मामला है (जिसके निर्माण में मुझे कुछ सेकंड लगे):
- दशमलव: यदि आप केवल इनपुट बैंडविड्थ का एक अंश रखने के लिए जा रहे हैं, तो आपके फ़िल्टर का आउटपुट अत्यधिक ओवरसमॉप हो जाएगा। डिसिमिनेशन का परिचय देने का मतलब है कि आपका फ़िल्टर आपको हर आउटपुट सैंपल नहीं देता है, लेकिन हर थ केवल एक - जो सामान्य रूप से बहुत सारे और बहुत से अलियासिंग को जन्म देगा, लेकिन जब से आप उन सभी सिग्नल को मिटा रहे हैं जो आपको उर्फ कर सकते हैं, आप कर सकते हैं ऐसा करने के लिए। चतुर फ़िल्टर कार्यान्वयन (पॉलीपेज़ डिकिमेटर) एम द्वारा कम्प्यूटेशनल प्रयास को कम कर सकते हैं, इस तरह से। आपके मामले में, आप से आसानी से समझ सकते हैं , और फिर, आपके कंप्यूटर को केवल गणना करनी होगीममम= ५०120050= 24इनपुट नमूना प्रति गुणन / संचय - बहुत आसान है। जीएनयू रेडियो के फिल्टर में आमतौर पर वह क्षमता होती है। और इस तरह, एफएफटी एफआईआर से भी बाहर (जो खुद को एक पॉलीपसिंग डेमिनेटर कार्यान्वयन के लिए बहुत अच्छी तरह से उधार नहीं देता है), मैं प्रदर्शन में 2 के एक और कारक को निचोड़ सकता हूं। ज्यादा नहीं कर सकते। मेरे सिस्टम पर, मेरे अनुभव में, राम बैंडविड्थ के बहुत करीब है। के लिये
- विलंबता: इसके बारे में परवाह मत करो। जब तक आपको जरूरत नहीं है, वास्तव में, नहीं। आप विशिष्ट ऑडियो सैंपलिंग दरों के साथ ऐसा कर रहे हैं? याद रखें, ऊपर बताया गया है। इसलिए फ़िल्टर आउटपुट की गणना करने में लगने वाला समय केवल MS / s लाइव सिग्नल स्ट्रीमिंग के लिए प्रासंगिक होगा। ऑफ़लाइन डेटा वाले डीएसपी के लिए: ठीक है, क्षतिपूर्ति करने के लिए अपने फ़िल्टर के समानांतर आपके पास जो भी संकेत हैं, उसमें देरी करें। (यदि आपका फ़िल्टर लीनियर चरण है, तो विलंब की अवधि फ़िल्टर की आधी हो जाएगी।) FIR फ़िल्टर के हार्डवेयर कार्यान्वयन में यह प्रासंगिक हो सकता है।96केएसरों«हास्यास्पद141सुश्रीरों
- हार्डवेयर कार्यान्वयन: तो शायद आपके पीसी या एम्बेडेड डिवाइस के सीपीयू और ओएस वास्तव में आपको अपने विलंबता बाधाओं को पूरा करने की अनुमति नहीं देते हैं, और इसलिए आप एफपीजीए-कार्यान्वित एफआईआर में देख रहे हैं। पहली बात जो आप देखेंगे, वह यह है कि हार्डवेयर के लिए, अलग-अलग डिज़ाइन के प्रतिमान हैं - "मैं सब कुछ दबाता हूँ, लेकिन1100मेरे इनपुट दर "फ़िल्टर को हार्डवेयर में आपके द्वारा तय किए गए निश्चित बिंदु संख्याओं के लिए एक बड़ी चौड़ाई की आवश्यकता होती है (जैसा कि CPU पर फ़्लोटिंग पॉइंट संख्याओं पर लागू होता है)। तो यह पहला कारण है कि आप आमतौर पर उस फ़िल्टर को कई में विभाजित करते हैं। , कैस्केड, छोटा, एफआईआर फिल्टर को कम करना। एक और कारण यह है कि आप हर कैस्केड "स्टेप" के साथ, अपने मल्टीप्लायरों (आमतौर पर, "डीएसपी स्लाइस") को कम दर पर चला सकते हैं, और इसलिए, उन्हें मल्टीप्लेक्स करें (डीएसपी स्लाइसों की संख्या) आमतौर पर बहुत सीमित होता है), कई नल के लिए एक गुणक का उपयोग करना। फिर भी एक और कारण यह है कि विशेष रूप से आधा-बैंड फिल्टर, यानी यह कम है कि आधे इनपुट बैंड को दबाते हैं और आधे इनपुट दर को वितरित करते हैं, बहुत कुशलता से हार्डवेयर में लागू होते हैं (क्योंकि वे आधे हैं) नल शून्य हो रहे हैं, कुछ ऐसा जो सीपीयू / SIMD कार्यान्वयन में शोषण करना कठिन है)।