با ما تماس بگیرید
ساعت : 8 الی 23
09117983709 - 09330859275
(مشاوره و سفارش پروژه)
totop

 فیلتر در حوزه فرکانس در نرم افزار matlabدوشنبه 17, مه 2021

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

 فیلتر در حوزه فرکانس در نرم افزار matlab

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

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

 فیلتر در حوزه فرکانس در نرم افزار matlab

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

matlabمتلب

نتیجه حاصل عیناً مشابه نتیجه اعمال فیلتر است . البته برای داده های طولانی این روش بسیار ناکارآمد است . برای فیلترهای FIR ، می توان داده های طولانی را به طول کوتاه تر که برای محاسبات fft بهینه تر باشند تفکیک کرد . تابع y = fftfilt(b,x)  ازoverlap add method برای داده های طولانی استفاده می کند و خروجی آن مشابه filter(b,1,x) است.

پاسخ ضربه :

چندین راه برای تولید یک دنباله ضربه در MATLAB وجود دارد که ساده ترین آن به صورت دستور   imp=[1;zeros(49,1)]است . پاسخ پله فیلتر با b=1 و   [۱  -۰٫۹] = a به شکل زیر است :

matlabمتلب

یک روش ساده برای مشاهده پاسخ ضربه استفاده از دستور 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 با دستور زير توليد مي شود :

براي محاسبه پاسخ فركانسي ۲۵۶ نقطه اي اين فيلتر و رسم پاسخ فاز و دامنه از دستور زير استفاده مي شود :

matlabمتلب

و يا براي نمايش همين پاسخ ها در fvtool ابتدا پنجره fvtool با دستور ، fvtool(b,a) باز شده و با فشار بر روي دكمه Magintude and phase Response قادر به مشاهده پاسخ ها هستيد .

دستور freqz همچنين مي تواند يك بردار از نقاط فركانسي دلخواه براي استفاده درمحاسبه پاسخ فركانسي دريافت كند . براي مثال :

matlabمتلب

پاسخ فركانسي مختلط را در نقاط مشخص شده در w براي فيلتر  مشخص شده در بردارهاي a,b محاسبه مي كنند . نقاط فركانسي مي توانند بين ۰ تا  باشند .

در حالت آنالوگ freqz پاسخ فركانسي را براي فيلترهاي آنالوگ تعريف شده با a,b با عملكردي مشابه freqz برآورده مي كند .

مي توان با دستور abs دامنه پاسخ و با دستور angle ، فاز (بر حسب راديان) پاسخ فركانسي موجود در بردار h را استخراج كرد . انجام اين كار با استفاده از دستورات زير در fvtool نيز امكان پذير است .

matlabمتلب

دستور unwarpنيز در تحليل هاي فركانسي مفيد است . اين تابع با اضافه كردن ضرايب   به فاز در نقاط گسستگي آن را پيوسته مي كند . براي مثال براي طراحي يك فيلتر  FIR درجه ۲۵پايين گذر داريم :

matlabمتلب

حال پاسخ فركانسي را با استفاده از freqz براي فاز به شكل زير استخراج كرده و رسم كنيد:

matlabمتلب

حال با دستور unwrap قادربه حذف پرش هاي  هستيد

matlabمتلب

با استفاده از phasez نيز قادر به مشاهده فاز باز شده هستيد .

تاخير جمعي (group delay) يك فيلتر  ، برآوردي از تاخير متوسط زماني فيلتر  به صورت تابعي از فركانس است و به صورت منفي مشتق اول پاسخ فاز فيلتر  تعريف مي شود براي رسم تاخير فاز و تاخير جمعي فيلتر  در يك شكلfvtool دستورات زير را در خط دستورات وارد كنيد

matlabمتلب

 

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

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

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

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

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


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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

حق نشر برای همیارپروژه – مرجع اصلی انجام پروژه های برنامه نویسی محفوظ است.