ডেসিমেট সহ একটি সংকেত ডাউনস্যাম্পলিং


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 - এবং কোনও কিউ - নমুনার সাথে সংকেতটি বিলম্ব করি তবে আমি প্রথম প্লটের প্রথম সেট পাই।

ডেসিমেট ফাংশনের উত্স কোডটি হল, 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]

আমি ডেসিমেট করার আগে একটি কম লো ফিল্টার ব্যবহার করছি, ফিল্টারটির প্রেরণামূলক প্রতিক্রিয়া

লো পাস ফিল্টার এর আবেগ প্রতিক্রিয়া

এটি ব্যাখ্যা করে যে বিলম্ব হওয়ার পরে কেন অনুপ্রবেশটি বিকৃত হয়, ডেসিমেশনটি অনুপ্রেরণামূলক প্রতিক্রিয়ার অংশগুলি নির্বাচন করে, যখন বিলম্বটি ডেসিমেশনের একাধিক হয়, এটি কেবল আবেগ প্রতিক্রিয়াটির শূন্যটি এবং একটিতে শূন্যের নমুনা নির্বাচন করে at শিখর.

স্বেচ্ছাসেবী বিলম্বের সাথে ইউনিট নমুনাকে খতম করার কোনও উপায় আছে, যার ফলস্বরূপ একটি মাপানো ইউনিট নমুনা আউটপুট?


আপনি বুঝতে পেরেছেন যে "একক নমুনা" আবেগটি আসলে একটি সিনক ফাংশন উপস্থাপন করছে, তাই না? কারণ স্যাম্পলিংয়ের আগে আপনাকে অ্যান্টি-ওরফে ফিল্টার করতে হবে এবং ফিল্টার করার সময় আপনার আদর্শ গাণিতিক প্রবণতা একটি সিন্ক ফাংশনে পরিবর্তিত হয়। এটি কেবল ঘটে যায় যে নমুনাগুলি সিন্টের জিরোগুলিতে হুবহু পড়ে যায় তাই এটি দেখতে এটির মতো লাগে না, তবে যদি সংকেতটি একটি নমুনার চেয়ে কম সময়ে স্থানান্তরিত হয় তবে আপনি এটি দেখতে পাবেন।
এন্ডোলিথ

উত্তর:


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]

qq2qnq0xd[n]n=0

x[n]

xf[n]=h[nD]

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

আবার, যেমন আপনি উল্লেখ করেছেন, এটি ফিল্টারটির প্রতিক্রিয়া থেকে আলাদা আলাদা ট্যাপগুলি আটকানোর প্রভাব ফেলেছে, যেমন ডেসিমেটেড আউটপুট সিগন্যাল একটি নমুনা বাদে আর সকলের জন্য শূন্য নয় (অর্থাত্ এটি আর কোনও প্রবণতার মতো দেখায় না) )। এটা আশা করা যেতে পারে. কেন?

xd[n]

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

H(ω)xd[n]

যেহেতু আপনি চান না যে ফিল্টারটি "বিকৃতি" এর উত্স, তাই আপনি ফিল্টার ছাড়াই আবার প্রক্রিয়াটি চেষ্টা করার বিষয়টি বিবেচনা করতে পারেন। তবে, আপনি তখন কী পাবেন তা বিবেচনা করুন:

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

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

qDxd[n]=0  n

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.