एक संकेत के साथ decsampling decimate


12

मैं एक संकेत को नष्ट करने के साथ प्रयोग कर रहा हूं, इस मामले में एक इकाई आवेग।

मैं पायथन का उपयोग कर रहा हूं, पायलैब के साथ। सबसे पहले, मैं एक इकाई आवेग बनाता हूं, और इसे 5 से कम करता हूं।

x = r_[zeros(0), 1, zeros(100)]
N = 2 ** 14
q = 5

y = decimate(x, q, ftype="fir")
subplot(211)
title("Original")
stem(range(len(x)), x)
subplot(212)
title("Decimated - FIR")
stem(range(len(y)), y)

figure()
subplot(211)
semilogx(log(abs(fft(x, N))))
subplot(212)
y = decimate(x, q, ftype="fir")
semilogx(log(abs(fft(y, N))))

यह निम्नलिखित भूखंडों के साथ होता है

यूनिट शून्य विलंब के साथ आवेग, और परिणामस्वरूप विघटित संकेत

मैं तो आवेग से पहले देरी के कुछ नमूने जोड़कर, एक्स को बदलकर:

x = r_[zeros(3), 1, zeros(100)]

इसके परिणामस्वरूप निम्नलिखित भूखंड मिलते हैं

यूनिट 3 नमूनों की देरी के साथ आवेग, और परिणामी विघटित संकेत

भूखंडों के दूसरे सेट में, परिणामी विघटित संकेत अब एक भी नमूना नहीं है, लेकिन विकृत हो गया है।

अगर मैं 5 के साथ सिग्नल में देरी करता हूं - और किसी भी कई q - नमूने के साथ, मुझे फिर से प्लॉट का पहला सेट मिलता है।

डिक्युट फंक्शन का सोर्स कोड है, https://github.com/scipy/scipy/blob/master/scipy/signal/signaltools.py#L1570

def decimate(x, q, n=None, ftype='iir', axis=-1):
    if not isinstance(q, int):
        raise TypeError("q must be an integer")

    if n is None:
        if ftype == 'fir':
            n = 30
        else:
            n = 8

    if ftype == 'fir':
        b = firwin(n + 1, 1. / q, window='hamming')
        a = 1.
    else:
        b, a = cheby1(n, 0.05, 0.8 / q)

    y = lfilter(b, a, x, axis=axis)

    sl = [slice(None)] * y.ndim
    sl[axis] = slice(None, None, q)
    return y[sl]

मैं डिकैमिट करने से पहले एक फ़िर लो पास फ़िल्टर का उपयोग कर रहा हूं, फ़िल्टर का आवेग प्रतिक्रिया है

कम पास फिल्टर की आवेग प्रतिक्रिया

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

क्या एक मनमाना देरी के साथ एक इकाई नमूने को डिक्रिप्ट करने का एक तरीका है, जिसके परिणामस्वरूप एक स्केल इकाई नमूना आउटपुट होता है?


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

जवाबों:


11

आप सही ढंग से समझने लगते हैं कि क्या चल रहा है। हालांकि, मुझे यकीन नहीं है कि आप क्या पाने की उम्मीद करते हैं। अपना प्रारंभिक उदाहरण लें। अपने इनपुट सिग्नल को :x[n]

x[n]=δ[n]

डिसिमिनेशन प्रक्रिया में पहला कदम यह है कि इनपुट सिग्नल को एंटी-अलियासिंग फिल्टर के आवेग प्रतिक्रिया साथ जोड़ा जाता है :h[n]

xf[n]=x[n]h[n]=δ[n]h[n]=h[n]

इसके बाद, फ़िल्टर किए गए सिग्नल को कारक ( आपके उदाहरण में ) से घटा दिया जाता है ।q5

xd[n]=xf[qn]=h[qn]

जैसा कि आपने नोट किया है, एफआईआर फिल्टर के लिए जिनके ऑर्डर कई (वास्तव में, चूंकि फिल्टर रैखिक-चरण है, ऑर्डर की जरूरत केवल मल्टीपल ऑफ ) होती है, समय पर नल देरी होते हैं सभी लिए शून्य । इसलिए, केवल पर nonzero है , जैसा कि आपने पाया।qq2qnq0xd[n]n=0

जब आप इनपुट आवेग एक समय विलंब लागू करते हैं , तो फ़िल्टर्ड आउटपुट बस उसी राशि से विलंबित होता है, क्योंकि फ़िल्टर रैखिक और समय अपरिवर्तनीय (LTI) है :x[n]

xf[n]=h[nD]

xd[n]=xf[qn]=h[qnD]

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

याद रखें कि असतत आवेग के असतत समय फूरियर रूपांतरण (DTFT) आवृत्ति डोमेन में फ्लैट (परिमाण में) है। यदि विलंबित आवेग के समतुल्य है, तो इसके लिए फ़्रीक्वेंसी डोमेन में फ्लैट परिमाण भी होना चाहिए। हालाँकि, इसका DTFT फ़िल्टर की आवृत्ति प्रतिक्रिया की केवल एक स्केल की गई प्रतिलिपि है:xd[n]

xd[n]=h[qnD]ejωDH(ωq)

जहां फिल्टर की आवृत्ति प्रतिक्रिया है। आउटपुट लिए एक विलंबित आवेग के बराबर होने के लिए, फ़िल्टर में एक ईंट-दीवार की प्रतिक्रिया होनी चाहिए जो कि उसके पासबैंड (पोस्ट-डिक्लेमेशन Nyquist फ़्रीक्वेंसी तक) और शून्य हर जगह (इसलिए) कोई अलियासिंग डाउनस्लैम्पिंग के बाद वापस लीक नहीं करता, जिससे परिणाम गैर-सपाट हो जाता है)। यह तब तक साकार नहीं होता जब तक आपके पास समय और संसाधनों की अनंत मात्रा न हो।H(ω)xd[n]

चूंकि फ़िल्टर "विकृति" का स्रोत है जो आप नहीं चाहते हैं, आप फ़िल्टर के बिना फिर से प्रक्रिया की कोशिश करने पर विचार कर सकते हैं। लेकिन, इस बात पर विचार करें कि आपको क्या मिलेगा:

xf[n]=x[n]=δ[nD]

xd[n]=xf[qn]=δ[qnD]

यदि , का एक से अधिक नहीं है , तो , जो कि शायद आप भी नहीं चाहते हैं।qDxd[n]=0  n

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