मैं एक संकेत को नष्ट करने के साथ प्रयोग कर रहा हूं, इस मामले में एक इकाई आवेग।
मैं पायथन का उपयोग कर रहा हूं, पायलैब के साथ। सबसे पहले, मैं एक इकाई आवेग बनाता हूं, और इसे 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)]
इसके परिणामस्वरूप निम्नलिखित भूखंड मिलते हैं
भूखंडों के दूसरे सेट में, परिणामी विघटित संकेत अब एक भी नमूना नहीं है, लेकिन विकृत हो गया है।
अगर मैं 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]
मैं डिकैमिट करने से पहले एक फ़िर लो पास फ़िल्टर का उपयोग कर रहा हूं, फ़िल्टर का आवेग प्रतिक्रिया है
यह बताता है कि देरी होने पर आवेग क्यों विकृत होता है, विखंडन आवेग प्रतिक्रिया के कुछ हिस्सों का चयन कर रहा है, जब विलंब विलम्ब का एक से अधिक है, यह केवल आवेग प्रतिक्रिया के शून्य का चयन करता है, और एक गैर-शून्य नमूना शिखर।
क्या एक मनमाना देरी के साथ एक इकाई नमूने को डिक्रिप्ट करने का एक तरीका है, जिसके परिणामस्वरूप एक स्केल इकाई नमूना आउटपुट होता है?