بسمه تعالی
گزارش پروژه درس پردازش سیگنال دیجیتال (DSP)
هدف از انجام این پروژه حذف نویز 50 هرتز موجود در یک سیگنال ثبت شده از مغز می باشد. بدین منظور روشهای مختلف برای طراحی بهترین فیلتر که پاسخ مورد نظر برای ما ایجاد کند مورد بررسی قرار گرفت، که در ادامه به آنها اشاره خواهد شد. (M-file های مربوطه در انتهای گزارش آورده شده است.) برای بررسی هرچه بهتر پاسخ فیلتر ابتدا چند سیگنال به شرح زیر در نظر گرفته شد:
– سینوسی با فرکانس 50 هرتز
– سینوسی با فرکانس 25 هرتز
– ترکیب دو سیگنال فوق
که فرکانس نمونه برداری برای هر یک از سیگنال های فوق Hz 256 در نظر گرفته شد. (مانند سیگنال اصلی) که در 1 ثانیه شکل موجها مشاهده می شود:
و در ادامه با محاسبه تبدیل فوریه سیگنالهای فوق، برای هر یک سه نمودار دامنه بر حسبdB و فاز (در محدوده 2*pi و 0) و طیف توان رسم گردید:
دستورات مورد نیاز جهت پیاده سازی سه سیگنال فوق در MATLAB:
اکنون به طراحی فیلترهای مختلف به همراه پاسخ فیلتراسیون آنها می پردازیم:
1) طراحی فیلتر FIR با استفاده از پنجره Kaiser با استفاده از دستورات MATLAB
در این روش با تعریف باندهای عبور و توقف و میزان دامنه در هریک با استفاده از دستور kaiserord مقدار بهینه برای M و Beta به دست می آید. در این طراحی مقدار تضعیف باند توقف 80 dB در نظر گرفته شده است. دستورات مورد نیاز و نمودارهای دامنه و فاز و طیف توان در ادامه آورده شده است:
با استفاده از این فیلتر خروجی های زیر برای سیگنالهای اولیه بدست آمد:
که ستون اول ورودی را پس از فیلتر شدن نمایش می دهد، در ستون دوم نمودار اندازه و در ستون سوم نمودار فاز رسم شده است و در ستون چهارم طیف توان مشاهده می شود. همانطور که ملاحظه می شود سیگنالهای اول و سوم دارای خروجی کاملاً مشابه و دارای حدود حداقل 40 dB تضعیف در کلیه فرکانسها می باشد. جالب آنکه سیگنال دوم دارای تضعیفی حدود 80 dB در کلیه فرکانسها می باشد.
برای اطمینان از بهینه بودن نتیجه فیلتر بار دیگر طراحی را با استفاده از فرمولهای کتاب Oppenheim انجام دادیم و به مقایسه نتایج پرداختیم: (روابط 59-7 تا 63-7)
2) طراحی فیلتر FIR با استفاده از پنجره Kaiser با استفاده از فرمول
در روش قبل مقدار بدست آمده برای M و Beta برابر 18562 و 5.6533 است و در این روش مقدار بدست آمده برای M و Beta برابر 25678 و 7.8573 است گرچه خروجی بدست آمده تفاوت محسوسی با حالت قبل ندارد. (با اینکه روابط به کار رفته در MATLAB همان روابط کتاب است در پارامترها تفاوت مشاهده می شود.)
با اعمال این فیلتر بر سیگنالهای ورودی خروجی به صورت زیر خواهد بود:
در طراحی با استفاده از پنجره Kaiser به دلیل آنکه ترکیبی از مقادیر M (درجه فیلتر) و پارامتر Beta تشکیل دهنده QF فیلتر ما می باشند و در واقع رابطه بین فرکانس مرکزی و پهنای باند توقف ما را تعیین می کند. به دلیل نامناسب بودن این نسبت در موارد فوق و در واقع بهینه نبودن پارامترها، این پهنای باند باعث تضعیف فرکانسهای غیر از 50 هرتز نیز می شود و در نتیجه پاسخ مورد انتظار که تنها حذف فرکانس 50 هرتز است بدست نیامد. البته دلیل دیگری که می توان برای شکل موج خروجی عنوان نمود تاثیر فاز فیلتر و همچنین اثرات استفاده از پنجره بر روی شکل موج است، چنانکه در ادامه می بینیم با طراحی IRR نتایج فیلتراسیون به انتظارات ما نزدیکتر خواهد بود. ضمن آنکه پیاده سازی چنین فیلترهای FIR با درجات بالا امکان پذیر نیست و با طراحی IIR درجات فیلتر به طور قابل ملاحظه ای کاهش می یابد.
3) طراحی فیلتر با استفاده از تابع irrnotch
استفاده از این تابع که M-file آن به صورت زیر است، نتایج بهتری را نشان می دهد:
این فیلتر دارای مشخصات زیر است: (دامنه، فاز، طیف توان)
که در صورت اعمال آن به سیگنالهای موردنظر داریم:
با تغییر مقدار پهنای باند میزان تضعیف در فرکانسهای دیگر نیز تغییر می یابد به طوریکه اگر فرکانس مرکزی نسبت به پهنای باند چندین برابر شود با اینکه عرض فیلتر بسیار کم می شود ولی تضعیف به شدت کاهش می یابد. اگر این فیلتر را با فیلترهای Kaiser مقاسیه کنیم، می بینیم که درجه این فیلترها تنها 2 است و در ضمن پاسخ فاز آنها با فیلترهای Kaiser متفاوت است.
کلاً در طراحی فیلترهای ناچ باید موارد زیر در نظر گرفته شود:
– برای ساختن آنها باید صفر کمپلکس در فرکانس مورد نظر قرار گیرد. (صفرها در)
– برای تیز کردن فیلتر قطهایی در قرار می دهیم که با توجه به خواص قطبها هرچه مقدار r بیشتر باشد (قطب به دایره واحد نزدیکتر باشد) فیلتر تیزتر خواهد بود. (مباحث فصل 5)
– G به گونه ای انتخاب می شود که در منطقه باند عبور باشد.
در نتیجه رابطه کلی برای طراحی یک فیلتر ناچ با رعایت موارد فوق به صورت زیر است:
در طرح ما چون فرکانس نمونه برداری 256 است پس محدوده (با در نظر گرفتن نرخ نایکوئیست) مربوط به باند فرکانسی 128-0 است. و در نتیجه داریم:
اگر r=0.95 در نظر گرفته شود آنگاه داریم:
آنگاه داریم: G=0.95188. و فیلتر زیر را خواهیم داشت:
اگر به رابطه فوق و آنچه در شرح irrnotch آمده دقت شود، ملاحظه می شود که در آنجا صفرها دقیقاً طبق همین رابطه اجرا شده است و قطبها نیز بر اساس مقدار تضعیف بدست آمده است. با توجه به جوابهای بدست آمده بهترین گزینه استفاده از همین تابع در طراحی فیلتر می باشد.
در ادامه پروژه با استفاده از فیلتر irrnotch سیگنال اصلی را فیلتر می کنیم که نحوه اجرا و پیاده سازی آن در محیط MATLAB طبق M-file زیر می باشد:
نتایج این فیلتر بر روی سیگنال اصلی به صورت حضوری در کلاس خدمت جنابعالی تقدیم گردید. درضمن کلیه برنامه های نوشته شده به ضمیمه این فایل تقدیم می گردد.
با تشکر
13