totop

فیلترها در متلبیکشنبه 16, مه 2021

متلب همیارپروژه

فیلترها در متلب

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

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

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

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

پایه ریاضی فیلتر کردن ، كانولوشن است . تابع conv یک عمل استاندارد کانولوشن یک بعدی با استفاده از دو بردار ورودی را انجام مي دهد. براي پرادازش سيگنال هاي دو بعدي از تابع conv2 استفاده مي شود . در زير مثالي از اين حالت را مشاهده مي كنيد

matlabمتلب

خروجی یک فیلتر دیجیتال (k) y برابر با کانولوشن ورودی آن ، (k)x ، در پاسخ ضربه فیلتر (k)h ، است . در صورتی که  (k)h و (k)x دارای طول محدود باشند ، پیاده سازی فیلتر با استفاده از دستور conv امکان پذیر است . به مثال زیر توجه کنید .

matlabمتلب

در حالت کلی تبدیل (z) Y به تبدیل z ورودی آن به شکل زیر مربوط است :

matlabمتلب

که در آن (z)H تابع تبدیل فیلتر است . ضرایب در دو بردار که یکی مربوط به صورت و دیگری مربوط به مخرج است ذخیره می شوند . فیلترها به راحتی به این شکل قابل پیاده سازی هستند . برای مثال ضرایب یک فیلتر تک قطبی پایین گذر به شکل زیر است .

matlabمتلب

طول y به دست آمده در بالا برابر با طول x بوده و فیلتر با ساختار ترآن هاده نوع II (transposed direct- fromII) پیاده سازی می شود . در صورتی که (۱)a با ۱ نباشد ، همه ضرایب بر آن تقسیم می شوند .

توابع موجود برای فیلتر کردن در Matlab

پیاده سازی بانک فیلتر چند نرخی : تابع upfirdn نرخ نمونه برداری یک سیگنال را با ضریب P/Q تغیير می دهد . این سیستم نتیجه سه سیستم افزایش نرخ نمونه برداری با ضریب P ، یک فیلتر FIR و کاهش نرخ نمونه برداری با ضریب Q است که به طور سري در کنار هم قرار گرفته اند . برای مثال برای تغییر نرخ نمونه برداری سیگنال از KHz 44.1 به KHz 48 ابتدا کم ترین نسبت P/Q را محاسبه می کنیم .

که P = 160 و Q = 147 نتیجه می دهد . حال با دستور زیر تابع نرخ نمونه برداری انکان پذیر می شود

سایر توابعی که کار فیلترسازی چند نرخی را انجام می دهند ، عبارتند از : resample ، interp و decimate .

پیاده سازی فیلترهای غیرعلی با فاز صفر : در فیلترای FIR می توان فیلترهای با فاز خطی طراحی کرد که با اعمال داده ها ، نمونه ها را با یک عدد ثابت تأخیر دهد . در حالی که در فیلترهای IIR اعوجاج فار معمولاً به صورت شدید غیرخطی است در حالت استفاده از تابع filtfilt این اعوجاج تا حدودی حذف می شود .

برای مثال برای یک سیگنال به طول ۱ ثانیه که با نرخ ۱۰۰Hz نمونه برداری شده و دو مؤلفه سینوسی در ۳ و ۴۰Hz دارد داریم :

matlabمتلب

حال یک فیلتر FIR (متوسط گیر ۱۰نقطه ای) را با هر دو تابع filter و filtfilt تولید کنید .

matlabمتلب

مشاهده می شود که هر دو فیلتر ، البته با کمی تفاوت مولفه ۴۰Hz را حذف کرده اند . خط منقطع (filtfilt) با سیگنال سینوسی هم فاز است در حالی که خط نقطه چین (filter) نسبت به سیگنال اصلی تاخیر فازی در حد ۵ نقطه دارد . برای بهترین نتایج باید طول داده حداقل سه برابر درجه فیلتر باشد .

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

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

جهت سفارش پروژه به لینک زیر مراجعه نمایید :
همچنین می توانید برای ارتباط سریعتر با شماره و آیدی تلگرام زیر تماس حاصل کنید :
۰۹۱۲۹۵۴۰۱۲۲ – آیدی تلگرام : @fnalk

از طریق کلیک برروی آیکن های زیر میتوانید پروژه خود را در تلگرام و یا واتساپ برای ما ارسال کنید:

ثبت سفارش در واتس آپ ثبت سفارش در تلگرام


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

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

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