totop

آموزش طراحی و پیاده سازی فیلترها در متلبسه‌شنبه 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 با ۱ نباشد ، همه ضرایب بر آن تقسیم می شوند .

توابع موجود برای فیلتر کردن متلب

پیاده سازی بانک فیلتر چند نرخی :

تابع 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) نسبت به سیگنال اصلی تاخیر فازی در حد ۵ نقطه دارد .

برای بهترین نتایج باید طول داده حداقل سه برابر درجه فیلتر باشد .

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

به علت دوگان بودن حوزه زمان و فرکانس قادر به انجام اعمال مربوط به فیلتر در هر دو حوزه هستید . برای پیاده سازی فیلترهای 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  باز می شود .

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

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

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

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

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


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

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

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