فیلترها در متلبیکشنبه 16, مه 2021
فیلترها در متلب
در ادامه آموزش های سایت همیارپروژه برنامه نویسی متلب ارائه خواهد شد .آموزشها از مقدماتی تا پیشرفته ادامه دارد و ما به شما کدنویسی در نرم افزار متلب را رایگان یاد خواهیم داد. با ما همراه باشید.
طراحی و پیاده سازی فیلترها در متلب
در این بخش به نحوه فیلتر کردن سیگنال های گسسته با استفاده از تابع filter و سایر توابع مربوطه در جعبه ابزار پردازش سیگنال پرداخته می شود . همچنین به نحوه استفاده از این جعبه ابزار در طراحی و تحلیل ویژگی های فیلترها که شامل پاسخ ضربه ، پاسخ دامنه و فاز ، تأخیر جمعی و مکان صفر و قطب ها است نیز اشاره می شود .
پایه ریاضی فیلتر کردن ، كانولوشن است . تابع conv یک عمل استاندارد کانولوشن یک بعدی با استفاده از دو بردار ورودی را انجام مي دهد. براي پرادازش سيگنال هاي دو بعدي از تابع conv2 استفاده مي شود . در زير مثالي از اين حالت را مشاهده مي كنيد
خروجی یک فیلتر دیجیتال (k) y برابر با کانولوشن ورودی آن ، (k)x ، در پاسخ ضربه فیلتر (k)h ، است . در صورتی که (k)h و (k)x دارای طول محدود باشند ، پیاده سازی فیلتر با استفاده از دستور conv امکان پذیر است . به مثال زیر توجه کنید .
در حالت کلی تبدیل (z) Y به تبدیل z ورودی آن به شکل زیر مربوط است :
که در آن (z)H تابع تبدیل فیلتر است . ضرایب در دو بردار که یکی مربوط به صورت و دیگری مربوط به مخرج است ذخیره می شوند . فیلترها به راحتی به این شکل قابل پیاده سازی هستند . برای مثال ضرایب یک فیلتر تک قطبی پایین گذر به شکل زیر است .
طول 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 دارد داریم :
حال یک فیلتر FIR (متوسط گیر ۱۰نقطه ای) را با هر دو تابع filter و filtfilt تولید کنید .
مشاهده می شود که هر دو فیلتر ، البته با کمی تفاوت مولفه ۴۰Hz را حذف کرده اند . خط منقطع (filtfilt) با سیگنال سینوسی هم فاز است در حالی که خط نقطه چین (filter) نسبت به سیگنال اصلی تاخیر فازی در حد ۵ نقطه دارد . برای بهترین نتایج باید طول داده حداقل سه برابر درجه فیلتر باشد .
در اینجا آشنایی با محیط متلب بخش صد و سی و سوم به پایان رسیده است و در آموزش های بعدی به مباحث دیگر آموزش متلب می پردازیم. همچنین از شما مخاطبین عزیز سایت همیارپروژه دعوت می کنم که برای انجام پروژه متلب خود آموزش های ما را دنبال نمایید.
نویسنده: زهرا رستمی
جهت سفارش پروژه به لینک زیر مراجعه نمایید :
همچنین می توانید برای ارتباط سریعتر با شماره و آیدی تلگرام زیر تماس حاصل کنید :
۰۹۱۲۹۵۴۰۱۲۲ – آیدی تلگرام : @fnalk
از طریق کلیک برروی آیکن های زیر میتوانید پروژه خود را در تلگرام و یا واتساپ برای ما ارسال کنید:
دیدگاهتان را بنویسید