totop

آموزش فيلتر IIR ،باتروث تعيميم يافته در Matlabپنج‌شنبه 27, مه 2021

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

آموزش فيلتر IIR ،باتروث تعيميم يافته در Matlab

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

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

 

طراحي مستقيم فيلتر IIR

در بخش قبل به  آموزش فيلترهاي IIR كلاسيك در متلب پرداختیم در این قسمت به آموزش طراحی مستقیم فیلتر IIR خواهیم پرداخت. بر خلاف حالت آنالوگ ، فيلترهاي مستقيماً طراحي شده ، به شكل هاي استاندارد پايين گذر، بالاگذر ، ميان گذر و ميان نگذر محدود نيستند . اين توابع قادر به طراحي فيلترهاي با پاسخ فركانسي چند باندي هستند . دستور yulewalk يك فيلتر  ديجتال IIR بازگشتي را با انطباق روي يك پاسخ فركانسي خاص طراحي مي كند . نام تابع  yulewalk خود گوياي روش به كار رفته در محاسبه ضرايب مخرج است . اين تابع معكوس fft پاسخ مطلوب ايده آل را گرفته و معادلات يول واكر اصلاح شده را با استفاده از نمونه هاي تابع خودهمبستگي به دست آمده حل مي كند . عبارت :

matlabمتلب

در وردي ، f را كه بردار نقاط فركانسي بين ۰ تا۱ (فركانس نايكوئيست) به همراه n درجه فيلتر  IIR و m كه بردار شامل دامنه هاي مطلوب در فركانس هاي مشخص شده در f است را مي گيرد و در خروجي بردارهاي a و b را كه ضرايب صورت و مخرج هستند مي دهد . تابع سازنده همتاي اين حالت در فيلترهاي FIR تابع fir2 است . در زير مشاهده مي كنيد .

طراحي فيلتر باتروث تعيميم يافته در متلب

با استفاده از دستور maxflat مي توانيد فيلتر باتروث تعميم يافته با تعداد متفاوت صفر و قطب نسبت به فيلتر باتروث طراحي كنيد . تفاوت maxflat با butter در اين است كه در تابع maxflat قادر به دادن دو ورودي (به جاي يك ورودي در فيلتر  butter) به عنوان درجات صورت و مخرج هستيد. اين فيلترها براي هر درجه اي از صورت و مخرج با ماكزيمم تعداد مشتقات در ۰ و فركانس نايكوئيست تنظيم شده در ۰ بهينه هستند . براي مثال وقتي هر دو درجه برابر باشند ، maxflat برابر butter مي شود .

matlabمتلب

البته maxflat تطبيق پذيرتر است ، چون قدرت طراحي فيلتري باتعداد صفر و قطب بيشتر را مي دهد .

matlabمتلب

سومين ورودي maxflat فركانس نصف توان است كه عددي بين صفر تا يك بوده و پاسخ دامنه مطلوب آن  مي باشد . همچنين قادر به طراحي فيلترهاي فاز خطي با ويژگي مسطح بودن با استفاده از ‘sym’ هستيم .

matlabمتلب

طراحي فيلترهاي FIR

براي طراحي فيلترهاي FIR روش هاي مختلفي وجود دارد . در جدول زير دستورات مورد استفاده براي طراحي فيلتر هاي FIR به روشهاي گوناگون نشان داده شده است .

فيلتر هاي با فاز خطي

به جز تابع cfirpm در جدول بالا همگي توابع توليدكننده فيلترهاي با فاز خطي هستند . توابع fir1 ، fir2 ، firls ، firpm ، fircls ، fircls1 و firrcos به صورت پيش فرض فيلترهاي نوع I و II را توليدكرده و توابع  firls و firpmordتوابع نوع III و IV را توليد مي كنند . cfripm قادر به توليد هر چهار نوع فاز خطي و همچنين فاز غيرخطي است .

روش پنجره گذاري

فيلتر ايده ال پايين گذر در فركانس هاي كمتر از فركانس قطع مقداريك و در فركانس هاي بيشتر از آن مقدار صفر دارد . اين به دليل غيرعملي بودن و بي انتها بودن پاسخ ضربه آن قابل پياده سازي نمي باشد . براي حل اين مشكل يك پنجره به آن اعمال مي شود . با داشتن قسمت مياني پاسخ  اصلي در مكان اصلي خود ، فيلتر  فاز خطي خواهيد داشت . براي مثال يك فيلتر پايين گذر با درجه ۵۱ و فركانس قطع  به شكل زير مي باشد :

matlabمتلب

پنجره اعمال شده در اين جا پنجره مستطيلي است دستور زير فيلتر  مزبور را در fvtool نشان مي دهد

matlabمتلب

در زير يك پنجره همينگ به فيلتر  اعمال شده و نتايج در fvtoolنشان داده شده اند .

matlabمتلب

اثر ريپل با استفاده از پنجره همينگ به خوبي كاهش يافت . اما اين مساله به قيمت افزايش باند گذر انجام شد. توابع fir1 و fir2 بر پايه اين روش پنجره گذاري هستند . اين توابع درجه فيلتر وتوصيفي از فيلتر مطلوب ايده ال راگرفته و معكوس تبديل فوريه پنجره گذاري شده آن فيلتر ايده ال را در خروجي مي دهند . طراحي فيلتر  FIR با باند استاندارد با استفاده از تابع fir1 مشابه توابع طراحي فيلتر  IIR است كه به مدل هاي استاندارد پايين گذر ، بالاگذر ، ميان گذر و ميان نگذر محدود مي شود . دستورات زير بردار سطري b را كه شامل ضرايب يك با پنجره همينگ از درجهn است توليد مي كند :

matlabمتلب

اين فيلتر  يك فيلتر  پايين گذر با فاز خطي FIR با فركانس قطع Wn (نرماليزه شده با نصف فركانس نايكوئيست و مربوط به دامنه ۶dB) است . براي يك فيلتر  بالا گذر ، كافي است «high» را به ليست پارامترهاي تابع اضافه كرد . براي فيلترهاي ميان گذرو ميان نگذر ،  Wn  بايد يك بردار ۲ عضوي كه مشخص كننده فركانس هاي لبه است ، باشد و در حالت ميان نگذر بايد «stop» را به ليست پارامترهاي تابع اضافه كرد . دستور b=fir1(n,Wn,window) از پنجره مشخص شده در بردار سطري window براي طراحي استفاده مي كند . بردار پنجره بايد n+1 عضو داشته باشد . در صورتي كه نوع پنجره را مشخص نكيند ، fir1 از پنجره همينگ استفاده مي كند . تابع kaiserord درجه فيلتر  ، فركانس قطع و پارامتر بتا مورد نياز پنجره كايزر را براي رسيدن به يك سري مشخصات خاص ، تخمين مي زند .

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

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

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

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

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


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

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

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