آموزش فيلتر IIR ،باتروث تعيميم يافته در Matlabپنجشنبه 27, مه 2021
آموزش فيلتر IIR ،باتروث تعيميم يافته در Matlab
در ادامه آموزش های سایت همیارپروژه برنامه نویسی متلب ارائه خواهد شد .آموزشها از مقدماتی تا پیشرفته ادامه دارد و ما به شما کدنویسی در نرم افزار متلب را رایگان یاد خواهیم داد. با ما همراه باشید.
طراحي مستقيم فيلتر IIR
در بخش قبل به آموزش فيلترهاي IIR كلاسيك در متلب پرداختیم در این قسمت به آموزش طراحی مستقیم فیلتر IIR خواهیم پرداخت. بر خلاف حالت آنالوگ ، فيلترهاي مستقيماً طراحي شده ، به شكل هاي استاندارد پايين گذر، بالاگذر ، ميان گذر و ميان نگذر محدود نيستند . اين توابع قادر به طراحي فيلترهاي با پاسخ فركانسي چند باندي هستند . دستور yulewalk يك فيلتر ديجتال IIR بازگشتي را با انطباق روي يك پاسخ فركانسي خاص طراحي مي كند . نام تابع yulewalk خود گوياي روش به كار رفته در محاسبه ضرايب مخرج است . اين تابع معكوس fft پاسخ مطلوب ايده آل را گرفته و معادلات يول واكر اصلاح شده را با استفاده از نمونه هاي تابع خودهمبستگي به دست آمده حل مي كند . عبارت :
در وردي ، f را كه بردار نقاط فركانسي بين ۰ تا۱ (فركانس نايكوئيست) به همراه n درجه فيلتر IIR و m كه بردار شامل دامنه هاي مطلوب در فركانس هاي مشخص شده در f است را مي گيرد و در خروجي بردارهاي a و b را كه ضرايب صورت و مخرج هستند مي دهد . تابع سازنده همتاي اين حالت در فيلترهاي FIR تابع fir2 است . در زير مشاهده مي كنيد .
طراحي فيلتر باتروث تعيميم يافته در متلب
با استفاده از دستور maxflat مي توانيد فيلتر باتروث تعميم يافته با تعداد متفاوت صفر و قطب نسبت به فيلتر باتروث طراحي كنيد . تفاوت maxflat با butter در اين است كه در تابع maxflat قادر به دادن دو ورودي (به جاي يك ورودي در فيلتر butter) به عنوان درجات صورت و مخرج هستيد. اين فيلترها براي هر درجه اي از صورت و مخرج با ماكزيمم تعداد مشتقات در ۰ و فركانس نايكوئيست تنظيم شده در ۰ بهينه هستند . براي مثال وقتي هر دو درجه برابر باشند ، maxflat برابر butter مي شود .
البته maxflat تطبيق پذيرتر است ، چون قدرت طراحي فيلتري باتعداد صفر و قطب بيشتر را مي دهد .
سومين ورودي maxflat فركانس نصف توان است كه عددي بين صفر تا يك بوده و پاسخ دامنه مطلوب آن مي باشد . همچنين قادر به طراحي فيلترهاي فاز خطي با ويژگي مسطح بودن با استفاده از ‘sym’ هستيم .
طراحي فيلترهاي FIR
براي طراحي فيلترهاي FIR روش هاي مختلفي وجود دارد . در جدول زير دستورات مورد استفاده براي طراحي فيلتر هاي FIR به روشهاي گوناگون نشان داده شده است .
فيلتر هاي با فاز خطي
به جز تابع cfirpm در جدول بالا همگي توابع توليدكننده فيلترهاي با فاز خطي هستند . توابع fir1 ، fir2 ، firls ، firpm ، fircls ، fircls1 و firrcos به صورت پيش فرض فيلترهاي نوع I و II را توليدكرده و توابع firls و firpmordتوابع نوع III و IV را توليد مي كنند . cfripm قادر به توليد هر چهار نوع فاز خطي و همچنين فاز غيرخطي است .
روش پنجره گذاري
فيلتر ايده ال پايين گذر در فركانس هاي كمتر از فركانس قطع مقداريك و در فركانس هاي بيشتر از آن مقدار صفر دارد . اين به دليل غيرعملي بودن و بي انتها بودن پاسخ ضربه آن قابل پياده سازي نمي باشد . براي حل اين مشكل يك پنجره به آن اعمال مي شود . با داشتن قسمت مياني پاسخ اصلي در مكان اصلي خود ، فيلتر فاز خطي خواهيد داشت . براي مثال يك فيلتر پايين گذر با درجه ۵۱ و فركانس قطع به شكل زير مي باشد :
پنجره اعمال شده در اين جا پنجره مستطيلي است دستور زير فيلتر مزبور را در fvtool نشان مي دهد
در زير يك پنجره همينگ به فيلتر اعمال شده و نتايج در fvtoolنشان داده شده اند .
اثر ريپل با استفاده از پنجره همينگ به خوبي كاهش يافت . اما اين مساله به قيمت افزايش باند گذر انجام شد. توابع fir1 و fir2 بر پايه اين روش پنجره گذاري هستند . اين توابع درجه فيلتر وتوصيفي از فيلتر مطلوب ايده ال راگرفته و معكوس تبديل فوريه پنجره گذاري شده آن فيلتر ايده ال را در خروجي مي دهند . طراحي فيلتر FIR با باند استاندارد با استفاده از تابع fir1 مشابه توابع طراحي فيلتر IIR است كه به مدل هاي استاندارد پايين گذر ، بالاگذر ، ميان گذر و ميان نگذر محدود مي شود . دستورات زير بردار سطري b را كه شامل ضرايب يك با پنجره همينگ از درجهn است توليد مي كند :
اين فيلتر يك فيلتر پايين گذر با فاز خطي FIR با فركانس قطع Wn (نرماليزه شده با نصف فركانس نايكوئيست و مربوط به دامنه ۶dB) است . براي يك فيلتر بالا گذر ، كافي است «high» را به ليست پارامترهاي تابع اضافه كرد . براي فيلترهاي ميان گذرو ميان نگذر ، Wn بايد يك بردار ۲ عضوي كه مشخص كننده فركانس هاي لبه است ، باشد و در حالت ميان نگذر بايد «stop» را به ليست پارامترهاي تابع اضافه كرد . دستور b=fir1(n,Wn,window) از پنجره مشخص شده در بردار سطري window براي طراحي استفاده مي كند . بردار پنجره بايد n+1 عضو داشته باشد . در صورتي كه نوع پنجره را مشخص نكيند ، fir1 از پنجره همينگ استفاده مي كند . تابع kaiserord درجه فيلتر ، فركانس قطع و پارامتر بتا مورد نياز پنجره كايزر را براي رسيدن به يك سري مشخصات خاص ، تخمين مي زند .
در اینجا آشنایی با نرم افزار متلب بخش صد و سی و هشتم به پایان رسیده است و در آموزش های بعدی به مباحث دیگر آموزش متلب می پردازیم. همچنین از شما مخاطبین عزیز سایت همیارپروژه دعوت می کنم که برای پروژه متلب خود آموزش های ما را دنبال نمایید.
نویسنده: زهرا رستمی
جهت سفارش پروژه به لینک زیر مراجعه نمایید :
همچنین می توانید برای ارتباط سریعتر با شماره و آیدی تلگرام زیر تماس حاصل کنید :
۰۹۱۲۹۵۴۰۱۲۲ – آیدی تلگرام : @fnalk
از طریق کلیک برروی آیکن های زیر میتوانید پروژه خود را در تلگرام و یا واتساپ برای ما ارسال کنید:
دیدگاهتان را بنویسید