संभव आकार देने के लिए सीमा?


9

मैं 100kHz, 16 बिट एप्लीकेशन में शोर को आकार देना चाहता हूं, ताकि DC-25kHz बैंड में कम से कम शोर के साथ सभी मात्राकरण शोर को 25khz-50kHz बैंड में स्थानांतरित किया जा सके।

मैंने सुदृढीकरण सीखने के माध्यम से एक 31-नमूना त्रुटि फ़िल्टर कर्नेल बनाने के लिए गणितज्ञ की स्थापना की जो अच्छी तरह से काम करता है: थोड़ी सी सीखने के बाद, मैं निम्न आवृत्ति बैंड में कमी के बारे में उच्च आवृत्ति शोर के बारे में ~ 16dB वृद्धि प्राप्त कर सकता हूं ( केंद्रीय लाइन असमान रूप से शोर स्तर है)। यह "गेर्ज़ोन-क्रेवन" शोर प्रमेय के अनुरूप है।

कुछ सीखने के बाद शोर स्पेक्ट्रम

अब मेरी समस्या:

मैं व्यापक सीखने के बाद भी शोर को और अधिक आकार देने का प्रबंधन नहीं कर सकता, हालांकि गेर्ज़ोन-क्रेवेन प्रमेय ने इसे मना नहीं किया। उदाहरण के लिए, कम बैंड में 40 डीबी की कमी और उच्च बैंड में 40 डीबी की वृद्धि को प्राप्त करना संभव होना चाहिए

तो क्या एक और मौलिक सीमा है जिसे मैं चला रहा हूं?

मैंने शैनन शोर / नमूना / सूचना प्रमेय को देखने की कोशिश की, लेकिन थोड़ी देर के साथ चक्कर लगाने के बाद, मैं केवल इससे एक सीमा प्राप्त करने में कामयाब रहा: गेरज़ोन-क्रेवेन प्रमेय, जो शैनन प्रमेय का प्रत्यक्ष परिणाम प्रतीत होता है।

किसी भी मदद की सराहना की है।

संपादित करें: अधिक जानकारी

सबसे पहले, फ़िल्टर कर्नेल जो उपरोक्त शोर को आकार देता है, ध्यान दें कि सबसे हालिया नमूना दाईं ओर है। BarChart का संख्यात्मक मान .01: {-0.16, 0.51, -0.74, 0.52, -0.04, -0.25, 0.22, -0.11, -0.02, 0.31, -0.56, 0.45, -0.13, 0.04, -0.14, 0.12, -0.06, 0.19, -0.22, -0.15, 0.4, 0.01, -0.41, -0.1, 0.84, -0.42, -0.81, 0.91, 0.75, -2.37, 2.29} (बिल्कुल नहीं बार चार) लेकिन इसी तरह के वक्र का उत्पादन करता है )

फ़िल्टर कर्नेल, राइट पर सबसे हालिया नमूना।

त्रुटि प्रतिक्रिया कार्यान्वयन के बारे में एक और टिप्पणी:

मैंने त्रुटि प्रतिक्रिया के दो अलग-अलग कार्यान्वयनों की कोशिश की। पहले मैंने गोल आउटपुट नमूने की तुलना वांछित मूल्य से की और त्रुटि के रूप में इस विचलन का उपयोग किया। दूसरा मैंने राउंडेड आउटपुट नमूने की तुलना (इनपुट + त्रुटि प्रतिक्रिया) से की। यद्यपि दोनों विधियां काफी अलग-अलग गुठली का उत्पादन करती हैं, दोनों एक ही शोर के बारे में स्तर को तीव्रता से आकार देने लगते हैं। यहां पोस्ट किया गया डेटा दूसरे कार्यान्वयन का उपयोग करता है।

यहाँ कोड है जो डिजीटल तरंग नमूनों की गणना करने के लिए उपयोग किया जाता है। चरण गोलाई के लिए कदम है। तरंग अविभाजित तरंग है (आमतौर पर सिर्फ शून्य जब कोई संकेत लागू नहीं होता है)।

TestWave[kernel_?VectorQ] := 
 Module[{k = kernel, nf, dith, signals, twave, deltas},
  nf = Length@k;
  dith = RandomVariate[TriangularDistribution[{-1, 1}*step], l];
  signals = deltas = Table[0, {l}];
  twave = wave;
  Do[
   twave[[i]] -= k.PadLeft[deltas[[;; i - 1]], nf];
   signals[[i]] = Round[twave[[i]] + dith[[i]], step];
   deltas[[i]] = signals[[i]] - twave[[i]];
   , {i, l}];
  signals
  ]

सुदृढीकरण विधि:

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

मानक फ़िल्टर डिज़ाइन की तुलना:

गणितज्ञ फिल्टर को जनरेट करने की अनुमति देता है। जब उनकी आवृत्ति प्रतिक्रिया प्लॉट की जाती है तो ये 36 डीबी की तुलना में बहुत बेहतर हो सकते हैं; 80-100 डीबी तक। संख्यात्मक मान: {0.024, -0.061, -0.048, 0.38, -0.36, -0.808, 2.09, -0.331, -4.796, 6.142, 3.918, -17.773, 11.245, 30.613, और -87.072, 113.676, -87.072, 30.613, 11.245 -17.773, 3.918, 6.142, -4.796, -0.331, 2.09, -0.808, -0.36, 0.38, -0.048, -0.061, 0.024}

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

हालांकि, जब वास्तविक शोर आकार देने वालों में वे लागू होते हैं, तो वे (ए) समान ~ 40 डीबी कंट्रास्ट से जुड़े होते हैं, (बी) वास्तव में कोई शोर क्षीणन करने वाले सीखा फिल्टर से भी बदतर प्रदर्शन करते हैं।

नीला: सीखा हुआ फिल्टर, पीला: आउट-ऑफ-द-बॉक्स विषुव फिल्टर, स्थानांतरित नहीं ... यह वास्तव में बदतर है


2
+1, बहुत दिलचस्प सवाल। क्या आपने नल के ऊपर फिल्टर के क्रम को बढ़ाने की कोशिश की है? 31 टैप एफआईआर के लिए 40dB दमन थोड़ा अधिक लगता है।
a_A

1
@ ओली, मुझे विश्वास नहीं होता कि मैं पूरी तरह से समझता हूं। मैं फ़िल्टर कर्नेल को पोस्ट कर सकता हूं यदि आप में रुचि रखते हैं। कुंद शब्दों में, दोलन भार हैं जो त्रुटि को वैकल्पिक करने के लिए मजबूर करता है -> इसे उच्च आवृत्तियों पर स्थानांतरित करता है।
tobalt

2
"शास्त्रीय" फिल्टर डिजाइन से @tobalt, यह एक अपेक्षित परिणाम है कि लंबे समय तक फिल्टर स्टिपर और / या स्टॉप बैंड में अधिक क्षीणन है और / या पास बैंड में कम तरंग है। अब, मेरा अनुमान है कि आपकी सुदृढीकरण विधि कुछ बिंदु के बाद क्षीणन की तुलना में अधिक स्थिरता को पुरस्कृत करती है; ऐसी कौन सी विधि है जिसे आप सुदृढ़ करने के लिए उपयोग करते हैं?
मार्कस मुलर

1
आप चाहते हैं कि Mathematica के फ़िल्टर डिज़ाइन अनुभाग पर एक नज़र डालें । शायद आप बस अपने फ़िल्टर की विशिष्टताओं को परिभाषित कर सकते हैं और उन्हें संतुष्ट करने वाले फ़िल्टर को वापस करने के लिए मौजूदा तकनीकों में से एक का उपयोग कर सकते हैं।
aAA

1
फिर वह निश्चित रूप से (वैकल्पिक रूप से चलने का) फ़िल्टर डिज़ाइन है। अपने फ़िल्टर विनिर्देशों को प्राप्त करें (जैसा कि आपने उन्हें यहां पोस्ट किया है) और इस फ़ंक्शन (इसके प्रकार का सबसे सरल) के माध्यम से एक फ़िल्टर बनाने का प्रयास करें और देखें कि यह किसके साथ आता है। यह गुणांक देखने के लिए अच्छा होगा कि फ़ंक्शन बनाम उन लोगों के साथ आता है जिनके साथ पुन: इंफ़ॉर्मेशन लर्निंग वापस आती है। यह भी ध्यान दें कि यह किस प्रकार के फ़िल्टर ऑर्डर के साथ आता है, मैं अनुमान लगा रहा हूं कि यह 31 से अधिक होगा। क्या इसे सिग्नल के लिए "अनुकूली" होना चाहिए?
aAA

जवाबों:


12

शोर को आकार देने के बिना बेसिक dithering

इस तरह काम करता है शोर आकार देने के बिना मूल मात्रा परिमाणीकरण:


चित्रा 1. बुनियादी dithered परिमाणीकरण प्रणाली आरेख। शोर शून्य-मीन त्रिकोणीय dither है जिसका अधिकतम निरपेक्ष मान 1. पूर्णांक निकटतम पूर्णांक के लिए है। अवशिष्ट त्रुटि आउटपुट और इनपुट के बीच का अंतर है, और केवल विश्लेषण के लिए गणना की जाती है।

त्रिकोणीय dither परिणामी अवशिष्ट त्रुटि के प्रसरण को 3 के कारक से बढ़ाता है ( to ), लेकिन मूल्य से शुद्ध मात्रात्मक त्रुटि के माध्य और विचरण को कम करता है। इनपुट संकेत के। इसका मतलब है कि शुद्ध त्रुटि संकेत इनपुट के साथ असंबंधित है, लेकिन उच्च क्षणों को डिकूप्ट नहीं किया जाता है, इसलिए यह वास्तव में पूरी तरह से स्वतंत्र यादृच्छिक त्रुटि नहीं है, लेकिन किसी ने भी यह निर्धारित नहीं किया है कि लोग नेट त्रुटि सिग्नल पर उच्च क्षणों की किसी भी निर्भरता को सुन सकते हैं। एक ऑडियो अनुप्रयोग में इनपुट संकेत।11214

स्वतंत्र योज्य अवशिष्ट त्रुटि के साथ हमारे पास सिस्टम का एक सरल मॉडल होगा:


चित्रा 2. बुनियादी dithered मात्रा का ठहराव। अवशिष्ट त्रुटि सफेद शोर है।

अनुमानित मॉडल में आउटपुट केवल इनपुट प्लस स्वतंत्र सफेद शोर अवशिष्ट त्रुटि है।

शोर को आकार देने के साथ

मैं आपके सिस्टम के बजाय मैथेमेटिका को बहुत अच्छी तरह से नहीं पढ़ सकता हूं, मैं लिप्शिट्ज एट अल से सिस्टम का विश्लेषण करूंगा " न्यूनतम श्रव्य शोर " जे। ऑडियो एनजी। सोक्।, वॉल्यूम ३ ९, नंबर ११, नवंबर १ ९९ १:

Lipshitz et al 1991 प्रणाली
चित्रा 3. लिप्शिट्ज एट अल। 1991 प्रणाली आरेख (उनके चित्र 1 से अनुकूलित)। फ़िल्टर (पाठ में इटैलिकाइज़्ड) में इसमें एक नमूना विलंब शामिल है, ताकि इसे त्रुटि प्रतिक्रिया फ़िल्टर के रूप में उपयोग किया जा सके। शोर त्रिकोणीय dither है।

यदि संकेत ए के वर्तमान और पिछले मूल्यों से अवशिष्ट त्रुटि स्वतंत्र है, तो हमारे पास एक सरल प्रणाली है:


चित्रा 4. Lipshitz एट अल का एक अनुमानित मॉडल। 1991 प्रणाली। फ़िल्टर अंजीर 3 के समान है और इसमें एक नमूना विलंब शामिल है। इसे अब फीडबैक फिल्टर के रूप में उपयोग नहीं किया जाता है। अवशिष्ट त्रुटि सफेद शोर है।

इस उत्तर में मैं अधिक आसानी से अनुमानित मॉडल (चित्र। 4) के साथ काम करूंगा। मूल Lipshitz एट अल में। 1991 प्रणाली, फ़िल्टर में एक सामान्य अनंत आवेग प्रतिक्रिया (IIR) फ़िल्टर रूप है जो IIR और परिमित आवेग प्रतिक्रिया (FIR) फ़िल्टर दोनों को कवर करता है। निम्नलिखित में हम मान लेंगे कि फ़िल्टर एक एफआईआर फ़िल्टर है, जैसा कि मेरा मानना ​​है कि आपके गुणांकों के साथ मेरे प्रयोगों पर आधारित है कि आपके सिस्टम में आपके पास क्या है। फ़िल्टर का स्थानांतरण कार्य है:

HFilter(z)=b1z1b2z2b3z3

कारक एक-नमूना विलंब का प्रतिनिधित्व करता है। अनुमानित मॉडल में अवशिष्ट त्रुटि से आउटपुट के लिए एक सीधा योग मार्ग भी है। यह फिल्टर के नकारात्‍मक आउटपुट के साथ सम्‍मिलित हो जाता है , जिससे फुल शोर शेपिंग फिल्टर ट्रांसफर फंक्शन बनता है:z1

H(z)=1HFilter(z)=1+b1z1+b2z2+b3z3+.

अपने फ़िल्टर गुणांक से जाने के लिए , जिसे आप क्रम में , पूर्ण शोर को आकार देने के लिए फ़िल्टर ट्रांसफर फ़ंक्शन बहुपद गुणांक , गुणांक का संकेत है। सिस्टम आरेख में फ़िल्टर आउटपुट की के कारण खाते में बदल दिया जाता है , और गुणांक को अंत तक जोड़ा जाता है ( नीचे ऑक्टेव स्क्रिप्ट में), और अंत में सूची उलट (द्वारा ) है:,b3,b2,b11,b1,b2,b3,b0=1horzcatflip

pkg load signal
b = [-0.16, 0.51, -0.74, 0.52, -0.04, -0.25, 0.22, -0.11, -0.02, 0.31, -0.56, 0.45, -0.13, 0.04, -0.14, 0.12, -0.06, 0.19, -0.22, -0.15, 0.4, 0.01, -0.41, -0.1, 0.84, -0.42, -0.81, 0.91, 0.75, -2.37, 2.29];
c = flip(horzcat(-b, 1));
freqz(c)
zplane(c)

स्क्रिप्ट परिमाण आवृत्ति प्रतिक्रिया और पूर्ण शोर को आकार देने वाले शून्य स्थानों को फ़िल्टर करती है:

फ़्रीज़ प्लॉट
चित्रा 5. पूर्ण शोर-आकार देने वाले फिल्टर की मैग्नीट्यूड आवृत्ति प्रतिक्रिया।

जेप्लेन की साजिश
चित्रा 6. फ़िल्टर के जेड-प्लेन प्लॉट ( ) और शून्य ( )। सभी शून्य यूनिट सर्कल के अंदर हैं, इसलिए पूर्ण शोर-आकार वाले फ़िल्टर न्यूनतम-चरण हैं।×

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

सभी-पोल डिजाइन से न्यूनतम-चरण एफआईआर में रूपांतरण

विभिन्न डिजाइन के लिए एक प्रक्रिया लेकिन कई मायनों में समकक्ष फ़िल्टर Stojanović एट अल में वर्णित हैं , "ऑल-पोल पुनरावर्ती डिजिटल फिल्टर डिजाइन अल्ट्रासाउंड पॉलिनॉमिअल्स पर आधारित", रेडियोइन्जिनियरिंग, वॉल्यूम 23, नंबर 3, सितंबर 2014। वे एक IIR ऑल-पोल कम-पास फिल्टर के ट्रांसफर फ़ंक्शन के विभाजक गुणांक की गणना करते हैं। उन लोगों के पास हमेशा एक प्रमुख गुणांक 1 होता है और यूनिट सर्कल के अंदर सभी खंभे होते हैं, जिन्हें स्थिर IIR फिल्टर की आवश्यकता होती है। यदि उन गुणांक का उपयोग न्यूनतम-चरण एफआई शोर आकार देने वाले फ़िल्टर के गुणांक के रूप में किया जाता है, तो वे कम-पास IIR फ़िल्टर (हस्तांतरण फ़ंक्शन विभाजक गुणांक गुणांक गुणांक) की तुलना में एक औंधा उच्च-पास आवृत्ति प्रतिक्रिया देंगे। आपके नोटेशन में उस लेख के गुणांकों का एक सेट है {-0.0076120, 0.0960380, -0.5454670, 1.8298040, -3.9884220, 5.8308660, -5.6495140, 3.3816780}, जिसे शोर आकार देने वाले अनुप्रयोग के लिए परीक्षण किया जा सकता है , हालांकि यह विनिर्देशन के बिल्कुल समान नहीं है:

आवृत्ति प्रतिक्रिया
चित्रा 7. Stojanović एट अल से गुणांक का उपयोग करते हुए एफआईआर फिल्टर के चुंबकत्व आवृत्ति प्रतिक्रिया। 2014।

ध्रुव-शून्य भूखंड
चित्रा 8. Stojanović एट अल से गुणांक का उपयोग करके एफआईआर फिल्टर के पोल-शून्य प्लॉट। 2014।

ऑल-पोल ट्रांसफर फ़ंक्शन है:

H(z)=11+a1z1+a2z2+a3z3+

तो, आप एक स्थिर ऑल-पोल IIR लो-पास फ़िल्टर डिज़ाइन कर सकते हैं और 1 के अग्रणी गुणांक के साथ न्यूनतम-चरण उच्च-पास एफआईआर फ़िल्टर प्राप्त करने के लिए गुणांक के रूप में गुणांक का उपयोग कर सकते हैं ।ab

एक ऑल-पोल फ़िल्टर को डिज़ाइन करने के लिए और इसे एक न्यूनतम-चरण एफआईआर फ़िल्टर में परिवर्तित करने के लिए, आप IIR फ़िल्टर डिज़ाइन विधियों का उपयोग नहीं कर पाएंगे, जो एक एनालॉग प्रोटोटाइप फ़िल्टर से शुरू होते हैं और बिलिनियर रूपांतरण का उपयोग करके डंडे और शून्य को डिजिटल डोमेन में मैप करते हैं। । जिसमें शामिल हैं cheby1, cheby2और ellipऑक्टेव और पायथन के साइपी में। ये तरीके ज़ीरो को जेड-प्लेन मूल से दूर कर देंगे ताकि फ़िल्टर आवश्यक ऑल-पोल प्रकार का नहीं होगा।

सैद्धांतिक प्रश्न का उत्तर

यदि आपको परवाह नहीं है कि नमूने की आवृत्ति के चौथाई से अधिक आवृत्तियों पर कितना शोर होगा, तो लिपशिट्ज एट अल। 1991 आपके प्रश्न को सीधे संबोधित करता है:

ऐसे भारित कार्यों के लिए, जो बैंड के हिस्से पर शून्य पर जाते हैं, अंजीर के सर्किट से प्राप्त होने वाली भारित शोर-बिजली कटौती के लिए कोई सैद्धांतिक सीमा नहीं है। 1. यह मामला होगा, उदाहरण के लिए, यदि कोई मानता है कि। कान में शून्य संवेदनशीलता है, कहते हैं, 20 kHz और Nyquist फ़्रिक्वेंसी, और इस तथ्य को प्रतिबिंबित करने के लिए भारित फ़ंक्शन का चयन करता है।

उनका चित्र 1. पोल और शून्य दोनों के साथ एक सामान्य IIR फिल्टर संरचना के साथ एक शोर शॉपर दिखाता है, जो कि आपके पास मौजूद एफआईआर संरचना के लिए अलग है, लेकिन वे जो कहते हैं वह उस पर भी लागू होता है, क्योंकि एक एफआईआर फ़िल्टर आवेग प्रतिक्रिया हो सकती है किसी भी स्थिर IIR फिल्टर के आवेग प्रतिक्रिया के करीब मनमाने ढंग से बनाया गया।

फिल्टर डिजाइन के लिए ऑक्टेव स्क्रिप्ट

यहां एक अन्य विधि द्वारा गुणांक गणना के लिए एक ऑक्टेव स्क्रिप्ट है जो मुझे लगता है कि स्टोजानोविसी एट अल के बराबर है। मेरे पैरामीटर के सही विकल्प के साथ 2014 विधि को रूप में किया गया ।ν=0dip

pkg load signal
N = 14; #number of taps including leading tap with coefficient 1
att = 97.5; #dB attenuation of Dolph-Chebyshev window, must be positive
dip = 2; #spectrum lift-up multiplier, must be above 1
c = chebwin(N, att);
c = conv(c, c);
c /= sum(c);
c(N) += dip*10^(-att/10);
r = roots(c);
j = (abs(r(:)) <= 1);
r = r(j);
c = real(poly(r));
c .*= (-1).^(0:(N-1)); #if this complains, then root finding has probably failed
freqz(c)
zplane(c)
printf('%f, ', flip(-c(2:end))), printf('\n'); #tobalt's format

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

परिमाण आवृत्ति प्रतिक्रिया
चित्रा 9. उपरोक्त स्क्रिप्ट से फिल्टर का चुंबक आवृत्ति आवृत्ति (एक पुराना लेकिन लगभग बराबर संस्करण)।

ध्रुव-शून्य भूखंड
चित्र 10. उपरोक्त लिपि से (पुराने किंतु लगभग बराबर संस्करण) फिल्टर के शून्य-शून्य भूखंड।

आपके अंकन में उपरोक्त लिपि से (एक पुराना लेकिन लगभग बराबर संस्करण) का गुणांक {0.357662, -2.588396, 9.931419, -26.205448, 52.450624, -83.531276, 108.508775, -116.272581, 102.875781, -74.473956, 43.140431, -19.131434, 5.923468}:। संख्या बड़ी है जो संख्यात्मक समस्याओं को जन्म दे सकती है।

शोर को आकार देने का ऑक्टेव कार्यान्वयन

अंत में, मैंने ऑक्टेव में शोर को आकार देने का अपना कार्यान्वयन किया और आपको जैसी समस्याएं मिलीं, वैसा नहीं किया। टिप्पणियों में हमारी चर्चा के आधार पर, मुझे लगता है कि आपके कार्यान्वयन में सीमा यह थी कि शोर स्पेक्ट्रम का मूल्यांकन एक आयताकार खिड़की उर्फ "नो विंडोिंग" का उपयोग करके किया गया था , जो उच्च-आवृत्ति वाले स्पेक्ट्रम को कम आवृत्तियों तक फैला देता था।

pkg load signal
N = length(c);
M = 16384; #signal length
input = zeros(M, 1);#sin(0.01*(1:M))*127;
er = zeros(M, 1);
output = zeros(M, 1);
for i = 1:M
  A = input(i) + er(i);
  output(i) = round(A + rand() - rand());
  for j = 2:N
    if (i + j - 1 <= M)
      er(i + j - 1) += (output(i) - A)*c(j);
    endif
  endfor
endfor
pwelch(output, max(nuttallwin(1024), 0), 'semilogy');

यहाँ छवि विवरण दर्ज करें
चित्रा 11. निरंतर शून्य इनपुट संकेत के लिए शोर को आकार देने के उपरोक्त ऑक्टेव कार्यान्वयन से परिमाणीकरण शोर वर्णक्रमीय विश्लेषण। क्षैतिज अक्ष: सामान्यीकृत आवृत्ति। ब्लैक: नो शोर शेपिंग ( c = [1];), रेड: योर ओरिजिनल फिल्टर, ब्लू: सेक्शन "फिल्टर डिजाइन के लिए ऑक्टेव स्क्रिप्ट"।

वैकल्पिक परीक्षण समय डोमेन
चित्रा 12. निरंतर शून्य इनपुट सिग्नल के लिए शोर को आकार देने के उपरोक्त ऑक्टेव कार्यान्वयन से समय डोमेन उत्पादन। क्षैतिज अक्ष: नमूना संख्या, ऊर्ध्वाधर अक्ष: नमूना मूल्य। लाल: आपका मूल फ़िल्टर, नीला: अनुभाग "फ़िल्टर डिज़ाइन के लिए ऑक्टेव स्क्रिप्ट" से फ़िल्टर।

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


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

1
मैंने त्रुटि को अलग कर दिया है: मेरा कार्यान्वयन उसी तरंग (समय में) का उत्पादन करता है जैसा कि आपका है। हालाँकि, ABS [फूरियर [तरंग]] फ़ंक्शन कुछ आंतरिक अतिप्रवाह / अंडरफ़्लो में चलता है, क्योंकि लौटा हुआ स्पेक्ट्रम अलग (उच्च तल) दिखता है
tobalt

1
@ ओली नीमितालो ओके ऐसा लगता है कि ओक्टेव में एफएफटी स्वचालित विंडोिंग का उपयोग करता है? वेनफॉर्म में एक हन्न खिड़की लगाने के बाद मैं "सही" एफएफटी प्राप्त कर सकता हूं। मैं संक्षेप में इस दृष्टिकोण की अखंडता का परीक्षण करूंगा और अंततः सीखना जारी रखूंगा और परिणाम पोस्ट करूंगा। आपकी सभी कोशिशों के लिए शुक्रिया। मैंने आपके पोस्ट को उत्तर के रूप में चिह्नित किया है।
टोबेल

1
@ robertbristow-johnson मुझे लगता है कि यह सब समान है। मैंने एक समीकरण को हटा दिया जहां एच (z) एक पुनरावर्ती फ़िल्टर के लिए 1 अंश के रूप में था। लेकिन यह एक एफआईएल फ़िल्टर है जो इनबाल्ट के मामले में है। मुझे संदेह है कि आप सोच सकते हैं कि यह एक पुनरावर्ती फ़िल्टर बन जाता है क्योंकि एक प्रतिक्रिया लूप है। लेकिन dithered मात्रा का ठहराव लूप में होता है जो फ़िल्टर आउटपुट से अवशिष्ट तक का रास्ता काट रहा है।
ओली नीमितालो

1
इसके अलावा Lipshitz एट अल। 1991 के विपरीत अर्थों के साथ और उपयोग करें , एक अभ्यास जिसे मुझे गैर-मानक होने के लिए dsp.stackexchange.com पर यहां से दिखाया गया था । ab
ओली नीमितालो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.