درون یابی در متلب : نمونه برداری افزایشی یا درون یابی سیگنال در متلب

درون یابی در متلب : نمونه برداری افزایشی یا درون یابی سیگنال در متلب

اصول درون یابی گسسته در زمان کاربرد های مهم بسیار زیادی از جمله طراحی و ساخت فیلتر و همچنین کاربرد های بسیاری در مباحث مخابراتی دارد . در بعضی کاربرد ها که رشته از نمونه برداری یک سیگنال پیوسته در زمان به دست آمده است ، ممکن است فرکانس نمونه برداری می نیمم فرکانس ممکن برای پرهیز از اختلاط فرکانسی باشد ، ولی پس از پردازش ها وفیلتر کردن های بعدی پهنای باند رشته کوچکتر شود .  در این پست هدف ما آموزش کاربردی درون یابی در متلب می باشد .

گام اول درون یابی در متلب : تعریف درون یابی (Interpolation) :

درون یابی روشی برای بازسازی سیگنال به صورت دقیق و یا به صورت تقریبی از روی نمونه ها می باشد .

درون یابی را نمونه برداری افزایشی (Upsampling) نیز می نامند.

گام دوم درون یابی در متلب  : انواع درون یابی :

دو روش برای درون یابی داریم :

  1. استفاده از مدار ZOH
  2. روش درون یابی خطی (Linear Interpolation)

ساده ترین روش درون یابی ، روش اول یعنی استفاده از مدار ZOH است .

 

اگر سیگنال دامنه محدود و فاصله نمونه ها به اندازه کافی کم باشد ، در این صورت می توانیم از طریق عبور نمونه ها از یک فیلتر پایین گذر ایده آل (LPF)  به طور کامل سیگنال را بازسازی نماییم .

برای توضیح بیشتر مثال کاربردی زیر را در نظر بگیرید .

مدار درون یابی ایده آل زیر را در نظر بگیرید .

مدار بازسازی ایده آل

خروجی مدار LPF را از طریق رابطه ی زیر می توانیم به دست آوریم :

کانولوشن برای خروجی مدار ایده آل

اما می دانیم که ورودی در این نوع مدار در واقع مجموعی از ضرب قطار ضربه در x(t) ها به صورت زیر می باشد :

ورودی , قطار ضربه

با جایگذاری مقدار  x_s (t) در رابطه ی خروجی مدار پایین گذر ایده آل ، خواهیم داشت : فرمول بازسازی

معادله ی فوق در واقع یک فرمول درون یابی است .

اما برای فیلتر پایین گذر با فرکانس قطع w_c و بهره T_s پاسخ ضربه را به صورت زیر خواهیم داشت :

که در نهایت برای خروجی با جایگذاری مقدار پاسخ ضربه به دست خواهیم آورد : 

نمودار مربوط به خروجی به صورت زیر به طور تقریبی خواهد بود :

درون یابی در متلب

 

حال که با توضیحات کاملی در مورد درون یابی یا نمونه برداری افزایشی آشنا شدیم . به بررسی درون یابی در متلب می پردازیم .

درون یابی در متلب :

درون یابی در متلب توسط دستور زیر محاسبه می شود :

1
y=interp(x,r)

با ذکر مثالی یادگیری و درک عمیق مبحث درون یابی در متلب رو شروع می نماییم :

به عنوان اولین و ساده ترین مثال یک سیگنال سینوسی نمونه برداری شده در 1 کیلو هرتز را تولید کنید . این سیگنال سینوسی را با ضریب درون یابی 5 ، درون یابی نمایید .

سیگنال سینوسی را x = sin(2*pi*35*t)+sin(2*pi*70*t)  در نظر می گیریم .

در نرم افزار متلب برای محاسبه ی درون یابی به صورت زیر کد نویسی را انجام می دهیم  :

1
2
3
t = :0.001:1;
x = sin(2*pi*35*t) + sin(2*pi*70*t);
y = interp(x,5);

و برای نمایش سیگنال اصلی و سیگنال درون یابی شده با فاکتور درون یابی 5 ، دستور زیر را در نرم افزار متلب وارد می نماییم :

1
2
3
4
5
6
7
8
subplot 211
stem(00:30,x(1:31),'filled','markersize',3)
grid on
xlabel 'Sample number',ylabel Original
subplot 212
stem(:120,y(1:121),'filled','markersize',3)
grid on
xlabel 'Sample number',ylabel Interpolated

در صورت اجرای دستورات بالا در نرم افزار متلب ، نمودار زیر را که نمودار بالایی مربوط به نمودار سیگنال اصلی و نمودار پایین مربوط به درون یابی با فاکتور 5 می باشد :

درونیابی در متلب

 

دستور زیر در نرم افزار متلب :

1
y = upsample(x,n)

برای افزایش مقادیر نمونه برداری به وسیله ی افزودن n-1 صفر بین مقادیر نمونه ها مورد استفاده قرار می گیرد .

به عنوان مثال در نظر بگیرید :

مقادیر نمونه برداری دنباله ی  x=[1 2 3 4]  را 3 برابر نمایید .

دستور نرم افزار متلب متلب برای افزایش 3 برابری مقادیر نمونه برداری دنباله ی فوق به صورت زیر نوشته می شود :

 

1
2
x = [1 2 3 4];
y = upsample(x,3)

و نتیجه در صورت اجرای کد بالا در نرم افزار متلب به صورت زیر به دست خواهد آمد :

1
y = 1 2 3 4

 

 

درون یابی تک بعدی : درون یابی خطی :

همانطور که گفته شد ، درون یابی انواع مختلفی داشت که یکی از روش های درون یابی ، درون یابی خطی بود .

برای محاسبه ی درون یابی خطی در نرم افزار متلب از کد دستور زیر استفاده می نماییم :

1
y = interp1(x,v,xq)

حال به بررسی مثال هایی از درون یابی خطی در نرم افزار متلب می پردازیم :

به عنوان مثال v=sin(x) را در بازه ی 0 تا pi/4 را نظر بگیرید . درون یابی را در بازه ی 0 تا pi/16 انجام دهید .

برای انجام این کار به صورت زیر در نرم افزار متلب کد نویسی را انجام می دهیم :

در ابتدا سیگنال داده شده و بازه مورد نظر را می نویسیم :

1
2
x =:pi/4:2*pi;
v = sin(x);

سپس بازه ی درون یابی را مشخص می نماییم :

1
xq =:pi/16:2*pi;

و در نهایت دستورات زیر را برای رسم نمودار درون یابی از سیگنال داده شده را در نرم افزار متلب می نویسیم :

1
2
3
4
5
figure
vq1 = interp1(x,v,xq);
plot(x,v,'o',xq,vq1,':.');
xlim([ 2*pi]);
title(' Linear Interpolation');

در صورت اجرای کد بالا در نرم افزار متلب ، نمودار درون یابی خطی برای سیگنال داده شده به صورت زیر به دست خواهد آمد :

درون یابی خطی در متلب

 

درون یابی دو بعدی :

در روشی که در بالا داشتیم ، چون یک متغیر برای ما تعریف شده بود ، و هدف ما فقط رسم در یک صفحه ی مختصات بود ، پس درون یابی را تک بعدی انجام می دادیم . اما در مثال ها و سوالاتی روش تک بعدی جوابگو نمی باشد و بایستی از روش دو بعدی درون یابی استفاده نماییم .

برای محاسبه ی درون یابی دو بعدی از دستور زیر در نرم افزار متلب استفاده می نماییم :

1
yl = interp2(X,Y,V,Xq,Yq);

برای درک بهتر این موضوع مثال زیر را در نظر بگیرید .

در ابتدا تابع peaks را نمونه برداری می نماییم :

پس در نرم افزار متلب کد زیر را می نویسیم :

1
2
[X,Y] = meshgrid(-3:3);
V = peaks(X,Y);

برای رسم کد بالا در نرم افزار متلب ، دستور زیر را می نویسیم :

1
2
3
figure
surf(X,Y,V)
title('Original Sampling');

در صورت اجرای کد بالا در نرم افزار متلب، نمودار زیر حاصل خواهد شد :

درون یابی دوبعدی درمتلب

با در نظر گرفتن فاصله ای به اندازه ی 0.25 در نرم افزار متلب کد زیر را می نویسیم :

1
2
[Xq,Yq] = meshgrid(-3:0.25:3);
Vq = interp2(X,Y,V,Xq,Yq);

برای رسم نمودار کد بالا در نرم افزار متلب ، از دستور زیر استفاده می کنیم :

1
2
3
figure
surf(Xq,Yq,Vq);
title('Linear Interpolation Using Finer Grid');

در صورت اجرای کد بالا در نرم افزار متلب ، نمودار زیر را خواهیم داشت :

درون یابی دو بعدی در متلب

 

 

در این پست به بررسی درون یابی های خطی ، درون یابی خطی تک بعدی و درون یابی خطی دو بعدی به همراه مثال هایی از کاربرد این نوع درون یابی ها در نرم افزار متلب پرداختیم . در پست های آینده سایت منتظر بررسی های مربوط به نحوه ی نمونه برداری ها در نرم افزار متلب به همراه مثال هایی از نمونه برداری در نرم افزار متلب باشید .

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

محصولی در سبد خرید شما وجود ندارد