فیلتر در حوزه فرکانس در نرم افزار matlabدوشنبه 17, مه 2021
فیلتر در حوزه فرکانس در نرم افزار matlab
در ادامه آموزش های سایت همیارپروژه برنامه نویسی متلب ارائه خواهد شد .آموزشها از مقدماتی تا پیشرفته ادامه دارد و ما به شما کدنویسی در نرم افزار متلب را رایگان یاد خواهیم داد. با ما همراه باشید.
فیلتر در حوزه فرکانس در نرم افزار matlab
به علت دوگان بودن حوزه زمان و فرکانس قادر به انجام اعمال مربوط به فیلتر در هر دو حوزه هستید . برای پیاده سازی فیلترهای IIR در حوزه فرکانس ، از حاصل ضرب DFT دنباله ورودی در خارج قسمت تبدیل DFT فیلتر به شکل زیر می شود
نتیجه حاصل عیناً مشابه نتیجه اعمال فیلتر است . البته برای داده های طولانی این روش بسیار ناکارآمد است . برای فیلترهای FIR ، می توان داده های طولانی را به طول کوتاه تر که برای محاسبات fft بهینه تر باشند تفکیک کرد . تابع y = fftfilt(b,x) ازoverlap add method برای داده های طولانی استفاده می کند و خروجی آن مشابه filter(b,1,x) است.
پاسخ ضربه :
چندین راه برای تولید یک دنباله ضربه در MATLAB وجود دارد که ساده ترین آن به صورت دستور imp=[1;zeros(49,1)]است . پاسخ پله فیلتر با b=1 و [۱ -۰٫۹] = a به شکل زیر است :
یک روش ساده برای مشاهده پاسخ ضربه استفاده از دستور fvtool(b,a) است . با این کار پنجره fvtool باز می شود .
پاسخ فرکانسی فیلتر در متلب
در حوزه دیجیتال ، تابع freqz از یک الگوریتم مبتنی بر fft برای محاسبه تبدیل z پاسخ فرکانسی یک فیلتر دیجیتال استفاده می کند . دستورfreqx(b,ap)= [h,w] پاسخ فرکانسی مختلط p نقطه ای فیلتر دیجیتال را می دهد . در ساده ترین حالت freqz ضرایب صورت و مخرج و یک عدد طبیعی P که نشان دهنده تعداد نقاطی است که پاسخ فرکانسی باید در آنها محاسبه شود را می گیرد و در خروجی یک پاسخ فرکانسی مختلط در بردار h و نقاط فركانس واقعي را بردار w بر حسب rad/s مي دهد اين تابع مي تواند پارامترهاي ديگري را نيز مانند فركانس نمونه برداري و يا برداري آن نقاط فركانسي دلخواه به عنوان ورودي بگيرد مثال زير پاسخ فركانسي ۲۵۶ نقطه اي براي يك فيلتر چيبي چف نوع يك را فراهم مي كند . در دستور freqz فركانس نمونه بردار fs برابر ۱۰۰۰ تعيين شده است.
چون ليست پارامترها شامل فركانس نمونه برداري مي شود ، تابع freqz يك بردار f كه شامل ۲۵۶ نقطه فركانسي بين ۰ تاfs/2 مي شود را در بر دارد . توجه شود كه اين جعبه ابزار از اين اصل استفاده مي كند كه فركانس واحد برابر فركانس نايكوئيست بوده كه به صورت نصف فركانس نمونه برداري تعريف مي شود . براي مثال براي يك سيستم با فركانس قطع ۱۰۰۰Hz ، فركانس ۳۰۰Hz برابر ۳۰۰/۵۰۰=۰٫۶ مي شود . براي برگرداندن فركانس نرماليزه شده به فركانس زاويه اي حول دايره واحد ، مقدار آن ضرب مي شود و براي برگرداندن فركانس نرماليزه شده به هرتز ، مقدار آن در نصف فركانس نمونه برداري ضرب مي شود . اگر تابع freqz بدون پارامتر خروجي صدا زده شود ، دامنه و فاز را بر حسب فركانس رسم مي كند . براي مثال يك فيلتر باتروث پايين گذر با فركانس قطع ۴۰۰Hz بر پايه فركانس نمونه برداري ۲۰۰۰Hz با دستور زير توليد مي شود :
براي محاسبه پاسخ فركانسي ۲۵۶ نقطه اي اين فيلتر و رسم پاسخ فاز و دامنه از دستور زير استفاده مي شود :
و يا براي نمايش همين پاسخ ها در fvtool ابتدا پنجره fvtool با دستور ، fvtool(b,a) باز شده و با فشار بر روي دكمه Magintude and phase Response قادر به مشاهده پاسخ ها هستيد .
دستور freqz همچنين مي تواند يك بردار از نقاط فركانسي دلخواه براي استفاده درمحاسبه پاسخ فركانسي دريافت كند . براي مثال :
پاسخ فركانسي مختلط را در نقاط مشخص شده در w براي فيلتر مشخص شده در بردارهاي a,b محاسبه مي كنند . نقاط فركانسي مي توانند بين ۰ تا باشند .
در حالت آنالوگ freqz پاسخ فركانسي را براي فيلترهاي آنالوگ تعريف شده با a,b با عملكردي مشابه freqz برآورده مي كند .
مي توان با دستور abs دامنه پاسخ و با دستور angle ، فاز (بر حسب راديان) پاسخ فركانسي موجود در بردار h را استخراج كرد . انجام اين كار با استفاده از دستورات زير در fvtool نيز امكان پذير است .
دستور unwarpنيز در تحليل هاي فركانسي مفيد است . اين تابع با اضافه كردن ضرايب به فاز در نقاط گسستگي آن را پيوسته مي كند . براي مثال براي طراحي يك فيلتر FIR درجه ۲۵پايين گذر داريم :
حال پاسخ فركانسي را با استفاده از freqz براي فاز به شكل زير استخراج كرده و رسم كنيد:
حال با دستور unwrap قادربه حذف پرش هاي هستيد
با استفاده از phasez نيز قادر به مشاهده فاز باز شده هستيد .
تاخير جمعي (group delay) يك فيلتر ، برآوردي از تاخير متوسط زماني فيلتر به صورت تابعي از فركانس است و به صورت منفي مشتق اول پاسخ فاز فيلتر تعريف مي شود براي رسم تاخير فاز و تاخير جمعي فيلتر در يك شكلfvtool دستورات زير را در خط دستورات وارد كنيد
در اینجا آشنایی با نرم افزار متلب بخش صد و سی و چهارم به پایان رسیده است و در آموزش های بعدی به مباحث دیگر آموزش متلب می پردازیم. همچنین از شما مخاطبین عزیز سایت همیارپروژه دعوت می کنم که برای انجام پروژه متلب خود آموزش های ما را دنبال نمایید.
نویسنده: زهرا رستمی
جهت سفارش پروژه به لینک زیر مراجعه نمایید :
همچنین می توانید برای ارتباط سریعتر با شماره و آیدی تلگرام زیر تماس حاصل کنید :
۰۹۱۲۹۵۴۰۱۲۲ – آیدی تلگرام : @fnalk
از طریق کلیک برروی آیکن های زیر میتوانید پروژه خود را در تلگرام و یا واتساپ برای ما ارسال کنید:
دیدگاهتان را بنویسید