totop

آموزش نرم افزار متلب – بخش سوم پردازش سیگنالچهارشنبه 13, مه 2020

آموزش متلب در همیارپروژه

آشنایی با محیط Matlab

در ادامه آموزش های سایت همیارپروژه برنامه نویسی متلب ارائه خواهد شد .آموزشها از مقدماتی تا پیشرفته ادامه دارد و ما به شما کدنویسی در نرم افزار متلب را یاد خواهیم داد. با ما همراه باشید.

انجام پروژه متلب

پاسخ دلتا و پاسخ ضربه در متلب

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

پاسخ دلتا در متلب

تابع دلتا را با نماد σ نمایش داده می شود همانطور که در مثال زیر مشاهده می نمایید تابه به جز در نقطه x=0 دارای مقدار صفر می باشد. برای کاربرد ما در پردازش سیگنال , تابع دلتا در نقطه x=0 مقداری برابر با ۱ دارد

به همین دلیل می باشد که به تابع دلتا تابع ضربه واحد نیز می گویند. واضح است که پاسخ ضربه , سیگنال خروجی سیستم است زمانی که ورودی آن تابع واحد ( دلتا) می باشد. نکته مهم این است که دو سیستم متفاوت دارای پاسخ ضربه های متفاوتی نیز می باشند.

شکل بالا پاسخ ضربه یک سیستم را نمایش می دهد. سیگنال ضربه a را در نظر بگیرید که در همه نقاط به جز x=8 سیگنال مقداری برابر با صفر دارد و همچنین مقدار سیگنال در x=8 نیز برابر با عدد -۳ می باشد به عبارت دیگر می توان نوشت:

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

این تابع نویسی به معنای آن است که ابتدا سیگنال دلتا را ۸ واحد در جهت مثبت محور x انتقال داده و سپس اندازه آن ر -۳ برابر کرده ایم. هر سیگنال ضربه را می توانیم به همین روش به صورت تابع دلتا نمایش بدهیم. حال این سوال مطرح می شود که اگر ورودی سیستمی تابعی مانند شکل زیر باشد, خروجی سیستم خطی چگونه خواهد شد؟

می دانیم که در یک سیستم خطی هر گونه انتقال و تغییر مقیاس در ورودی موجب می شود همان تغییرات در خروجی رخ دهد. به همین ترتیب اگر در یک سیستم خطی ورودی تابع σ باشد و خروجی h باشد آنگاه به ازای ورودی:

خروجی زیر تولید خواهد شد

همانطور که میبینید پاسخ ضربه نیز به همان اندازه در خروجی انتقال یافته و تغییر مقیاس می دهد. نتیجه اینکه اگر پاسخ ضربه یک سیستم را بدانیم به راحتی می توانیم خروجی سیستم به ازای سیگنال ضربه را محاسبه نماییم.

کانولوشن در متلب

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

به عبارت دیگر

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

در شکل زیر نشان می دهیم که

عملگر کانولوشن چگونه بر روی سیگنال ورودی اعمال می شود . فرض نمایید سیگنال ورودی x و سیگنال خروجی y ثابت باشند. در مقابل عملگر کانولوشن می تواند به چپ و یا راست حرکت نماید .با اعمال عملگر کانولوشن مقادیر کانولوشن زیر مقادیر ورودی قرار می گیرد سپس چهارnنمونه از سیگنال ورودی وارد ماشین کانولوشن شده و با مقادیر نشان داده شده در ماشین کانولوشن یک به یک ضرب خواهند شد . در نهایت جمع کل حاصلضرب ها تحت عنوان سیگنال خروجی به نمایش گذاشته می شود. به عنوان نمونه در شکل زیر مقدار y[6] درخروجی با استفاده از مقدار های x(3…۶) از سیگنال ورودی محاسبه شده است.

برای محاسبه نمودن y(7) عملگر کانولوشن یک واحد به سمت راست حرکت می نماید . مقادیری که بالای عملگر کانولوشن قرار دارند با مقادیر پاسخ ضربه ضرب می شوند , در نهایت هم جمع کل آنها به عنوان y(7) قرار می گیرد. همین روند برای محاسبه نمودن کلیه داده های خروجی  تکرار خواهد شد. دقت نمایید که نحوه داده شدن مقادیر ورودی به کانولوشن از اهمیت خاصی برخوردار می باشد.

کد کانولوشن در متلب

حال در نرم افزار متلب نحوه نمایش تابع کانولوشن را بیان می نماییم و همچنین کانولوشن دو سیگنال را کد نویسی می کنیم . به مثال زیر در نرم افزار متلب دقت نمایید:

همانطور که مشاهده می نمایید ۲ دستور ابتدایی موج سینوسی با فرکانس ۲۰۰ هرتز و نرخ نمونه برداری ۸۰۰۰ نمونه در ثانیه را نمایش می دهد. و سپس یک سیگنال تصادفی را تولید می نماییم و پس از جمع شدن با موج سینوسی سیگنال جدیدی حاصل می شود و در گام بعدی یک فیلتر گوسین به اندازه ۱۰۱ نمونه ایجاد شده است و در نهایت سیگنال b با فیلتر گاوسین کانولوشن شده و سیگنال c تولید شده است.

نکته

زمانی که این سه سیگنال پخش می شود متوجه می شوید که سیگنال اول یک سیگنال ایده ال با فرکانس ۲۰۰ هرتز در خروجی تولید می نماید اما سیگنال دوم به دلیل افزودن مقدار های تصادفی به آن نویز هایی در خروجی خود دارد و نهایتا در سیگنال سوم نویز سیگنال تا حدود زیادی حذف شده است .در واقع حذغ نویز به دلیل اعمال پاسخ ضربه گاوسین به سیگنال صورت پذیرفته است.

 

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

 

نویسنده: زهرا رستمی

 


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

نشانی ایمیل شما منتشر نخواهد شد.

حق نشر برای همیارپروژه ❤️ مرجع انجام پروژه دورکاری و آنلاین ✔️ سایت انجام پروژه و استخدام فریلنسر در همه حوزه ها ، مهارت ها ، نرم افزارها و پروژه های برنامه نویسی محفوظ است.