शोर को आकार देने के बिना बेसिक dithering
इस तरह काम करता है शोर आकार देने के बिना मूल मात्रा परिमाणीकरण:
चित्रा 1. बुनियादी dithered परिमाणीकरण प्रणाली आरेख। शोर शून्य-मीन त्रिकोणीय dither है जिसका अधिकतम निरपेक्ष मान 1. पूर्णांक निकटतम पूर्णांक के लिए है। अवशिष्ट त्रुटि आउटपुट और इनपुट के बीच का अंतर है, और केवल विश्लेषण के लिए गणना की जाती है।
त्रिकोणीय dither परिणामी अवशिष्ट त्रुटि के प्रसरण को 3 के कारक से बढ़ाता है ( to ), लेकिन मूल्य से शुद्ध मात्रात्मक त्रुटि के माध्य और विचरण को कम करता है। इनपुट संकेत के। इसका मतलब है कि शुद्ध त्रुटि संकेत इनपुट के साथ असंबंधित है, लेकिन उच्च क्षणों को डिकूप्ट नहीं किया जाता है, इसलिए यह वास्तव में पूरी तरह से स्वतंत्र यादृच्छिक त्रुटि नहीं है, लेकिन किसी ने भी यह निर्धारित नहीं किया है कि लोग नेट त्रुटि सिग्नल पर उच्च क्षणों की किसी भी निर्भरता को सुन सकते हैं। एक ऑडियो अनुप्रयोग में इनपुट संकेत।11214
स्वतंत्र योज्य अवशिष्ट त्रुटि के साथ हमारे पास सिस्टम का एक सरल मॉडल होगा:
चित्रा 2. बुनियादी dithered मात्रा का ठहराव। अवशिष्ट त्रुटि सफेद शोर है।
अनुमानित मॉडल में आउटपुट केवल इनपुट प्लस स्वतंत्र सफेद शोर अवशिष्ट त्रुटि है।
शोर को आकार देने के साथ
मैं आपके सिस्टम के बजाय मैथेमेटिका को बहुत अच्छी तरह से नहीं पढ़ सकता हूं, मैं लिप्शिट्ज एट अल से सिस्टम का विश्लेषण करूंगा । " न्यूनतम श्रव्य शोर " जे। ऑडियो एनजी। सोक्।, वॉल्यूम ३ ९, नंबर ११, नवंबर १ ९९ १:
चित्रा 3. लिप्शिट्ज एट अल। 1991 प्रणाली आरेख (उनके चित्र 1 से अनुकूलित)। फ़िल्टर (पाठ में इटैलिकाइज़्ड) में इसमें एक नमूना विलंब शामिल है, ताकि इसे त्रुटि प्रतिक्रिया फ़िल्टर के रूप में उपयोग किया जा सके। शोर त्रिकोणीय dither है।
यदि संकेत ए के वर्तमान और पिछले मूल्यों से अवशिष्ट त्रुटि स्वतंत्र है, तो हमारे पास एक सरल प्रणाली है:
चित्रा 4. Lipshitz एट अल का एक अनुमानित मॉडल। 1991 प्रणाली। फ़िल्टर अंजीर 3 के समान है और इसमें एक नमूना विलंब शामिल है। इसे अब फीडबैक फिल्टर के रूप में उपयोग नहीं किया जाता है। अवशिष्ट त्रुटि सफेद शोर है।
इस उत्तर में मैं अधिक आसानी से अनुमानित मॉडल (चित्र। 4) के साथ काम करूंगा। मूल Lipshitz एट अल में। 1991 प्रणाली, फ़िल्टर में एक सामान्य अनंत आवेग प्रतिक्रिया (IIR) फ़िल्टर रूप है जो IIR और परिमित आवेग प्रतिक्रिया (FIR) फ़िल्टर दोनों को कवर करता है। निम्नलिखित में हम मान लेंगे कि फ़िल्टर एक एफआईआर फ़िल्टर है, जैसा कि मेरा मानना है कि आपके गुणांकों के साथ मेरे प्रयोगों पर आधारित है कि आपके सिस्टम में आपके पास क्या है। फ़िल्टर का स्थानांतरण कार्य है:
HFilter(z)=−b1z−1−b2z−2−b3z−3−…
कारक एक-नमूना विलंब का प्रतिनिधित्व करता है। अनुमानित मॉडल में अवशिष्ट त्रुटि से आउटपुट के लिए एक सीधा योग मार्ग भी है। यह फिल्टर के नकारात्मक आउटपुट के साथ सम्मिलित हो जाता है , जिससे फुल शोर शेपिंग फिल्टर ट्रांसफर फंक्शन बनता है:z−1
H(z)=1−HFilter(z)=1+b1z−1+b2z−2+b3z−3+….
अपने फ़िल्टर गुणांक से जाने के लिए , जिसे आप क्रम में , पूर्ण शोर को आकार देने के लिए फ़िल्टर ट्रांसफर फ़ंक्शन बहुपद गुणांक , गुणांक का संकेत है। सिस्टम आरेख में फ़िल्टर आउटपुट की के कारण खाते में बदल दिया जाता है , और गुणांक को अंत तक जोड़ा जाता है ( नीचे ऑक्टेव स्क्रिप्ट में), और अंत में सूची उलट (द्वारा ) है:…,−b3,−b2,−b11,b1,b2,b3,…b0=1horzcat
flip
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+a1z−1+a2z−2+a3z−3+…
तो, आप एक स्थिर ऑल-पोल 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. निरंतर शून्य इनपुट सिग्नल के लिए शोर को आकार देने के उपरोक्त ऑक्टेव कार्यान्वयन से समय डोमेन उत्पादन। क्षैतिज अक्ष: नमूना संख्या, ऊर्ध्वाधर अक्ष: नमूना मूल्य। लाल: आपका मूल फ़िल्टर, नीला: अनुभाग "फ़िल्टर डिज़ाइन के लिए ऑक्टेव स्क्रिप्ट" से फ़िल्टर।
शून्य इनपुट के लिए बहुत अधिक मात्रा में आउटपुट नमूना मूल्यों में फिल्टर (नीला) आकार देने वाले अधिक चरम शोर का परिणाम होता है।