3 راه ساده برای طراحی فیلتر باترورث در متلب

3 راه ساده برای طراحی فیلتر باترورث در متلب

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

فیلتر باترورث (Butterworth filter) :

اصلی ترین کار فیلتر ها جدا سازی سیگنال ها بر اساس فرکانس و حذف نویز است .  

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

  1. فیلتر پایین گذر
  2. فیلتر بالا گذر
  3. فیلتر میان گذر
  4. فیلتر میان نگذر

اصلی ترین کار فیلتر ها جدا سازی سیگنال ها بر اساس فرکانس و حذف نویز است . 

که در پست های قبل در مورد طراحی فیلتر های بالا گذر در متلب و طراحی فیلتر های پایین گذر آنالوگ در متلب و طراحی فیلتر های پایین گذر دیجیتال در متلب مروری داشتیم .

در این پست هدف ما بررسی یک فیلتر مهم دیگر از انواع فیلتر ها یعنی فیلتر باترورث است . که با بررسی تابع تبدیل فیلتر باترورث پایین گذر و فیلتر بالا گذر و میان گذر و میان نگذر باترورث در متلب آشنا خواهیم شد .

 

اندازه ی تابع تبدیل فوریه فیلتر باترورث به صورت زیر می باشد :

تابع تبدیل فیلتر باترورث

که از نظر نموداری و ساختاری شبیه به یک فیلتر پایین گذر می باشد .

  • N اعداد صحیح می باشد .
حتما بخوانید:  آموزش سریع توابع گسسته در متلب به همراه 4 مثال مهم

مثال تابع تبدیل فیلتر باترورث پایین گذر در متلب :

در اینجا برای یادگیری بهتر و عمیق تر فیلتر باترورث در متلب ( Lowpass Butterworth Transfer Function ) ، با مثال و تشریح کامل مثال و کد نویسی مثال در نرم افزار متلب  آموزش را خواهیم داشت .

اولین مثال در رابطه با تابع تبدیل فیلتر باترورث پایین گذر در متلب است .

می خواهیم یک فیلتر باترورث پایین گذر در متلب طراحی نماییم که دارای ویژگی ها وخصوصیات زیر است :

  1. فرکانس قطع 300Hz
  2. فرکانس نمونه برداری 1000Hz

این فیلتر از مرتبه 6 می باشد .برای این فیلتر باترورث در متلب ، نمودار اندازه و فاز متناظرش را رسم نمایید . همچنین بازه متناظر را برابر 0.6pi rad/sample در نظر بگیرید.

کد فیلتر باترورث در متلب :

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

1
2
clc
[b,a] = butter(n,Wn)

خب می خواهیم با استفاده از این کد که در بالا ذکرشد ، فیلتر باترورث پایین گذر در متلب را طراحی کنیم .

در ابتدا باید فرکانس قطع و فرکانس نمونه برداری که در مورد فیلتر به ما گفته شده است را وارد نماییم و در نهایت با استفاده از کد فیلتر باترورث در متلب ، فیلتر را طراحی نماییم .

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

1
2
3
4
clc
fc = 300;
fs = 1000;
[b,a] = butter(6,fc/(fs/2));

اما در قسمت دوم سوال چون از ما خواسته شده بود که نمودار اندازه و فاز را نیز برای فیلتر باترورث نمایش دهیم باید به صورت زیر کد نویسی را در نرم افزار متلب انجام دهیم :

1
2
clc
freqz(b,a)

که کد نویسی نمودار اندازه و فاز فیلتر باترورث پایین گذر در متلب در حالت کلی به صورت زیر می باشد :

حتما بخوانید:  چگونه می توانیم فیلتر بالا گذر در متلب طراحی کنیم ؟

1
2
3
4
5
clc
fc = 300;
fs = 1000;
[b,a] = butter(6,fc/(fs/2));
freqz(b,a)

پس از اجرای کد بالا ، نمودار اندازه و فاز فیلتر باترورث پایین گذر در متلب به صورت زیر حاصل خواهد شد :

فیلتر باترورث در متلب

 

فیلتر باترورث میان نگذر در متلب :

برای طراحی فیلتر باترورث میان نگذر در متلب (Bandstop Butterworth Filter ) هم با ذکر یک مثال آموزش را شروع می کنیم .

یک فیلتر باترورث میان نگذر در متلب را با مشخصات زیر طراحی کنید .

  1.  فرکانس های نرمالیزه شده مرزی 0.6pi و 0.2pi
  2. مرتبه ی فیلتر 6 می باشد .

نمودار اندازه و فاز را برای این فیلتر باترورث میان نگذر در متلب را رسم نمایید .

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

1
2
3
clc
[b,a] = butter(3,[0.2 0.6],'stop');
freqz(b,a)

که پس از اجرای کد بالا ، اندازه و فاز فیلتر باترورث میان نگذر در متلب به صورت زیر نمایش داده خواهد شد :

فیلتر باترورث میان نگذر در متلب

فیلتر باترورث بالا گذر در متلب :

برای طراحی فیلتر باترورث بالا گذر در متلب (Highpass Butterworth Filter ) نیز با ذکر یک مثال به آموزش می پردازیم .

می خواهیم یک فیلتر باترورث بالا گذر در متلب طراحی کنید که دارای ویژگی های زیر باشد :

  1. فرکانس قطع 300Hz
  2. فرکانس نمونه برداری 1000Hz
  3. همچنین بازه متناظر را برابر 0.6pi rad/sample در نظر بگیرید.

نمودار اندازه و فاز متناظر را رسم نمایید .

صفرها ، قطب ها و بهره را با استفاده از دستور

1
2
clc
fvtool

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

برای طراحی فیلتر باترورث بالا گذر در متلب از کد زیر استفاده خواهیم کرد :

حتما بخوانید:  حل معادلات سیستم های خطی با استفاده از متلب

1
2
3
4
clc
[z,p,k] = butter(9,300/500,'high');
sos = zp2sos(z,p,k);
fvtool(sos,'Analysis','freq')

که در صورت اجرای کد بالا در نرم افزار متلب ، نمودار اندازه و فاز برای فیلتر باترورث بالا گذر در متلب به صورت زیر نمایش داده خواهد شد :

فیلتر باترورث بالا گذر در متلب

فیلتر باترورث میان گذر در متلب :

برای طراحی فیلتر باترورث میان گذر در متلب (Bandpass Butterworth Filter) با استفاده از یک مثال آموزش را شروع می کنیم .

یک فیلتر میان گذر باترورث از مرتبه ی 20 را طراحی کنید که ویژگی های زیر را دارا باشد :

  1. فرکانس قطع پایین 500Hz
  2. فرکانس قطع بالا 560Hz
  3. مقدار نمونه برداری 1500Hz

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

1
2
clc
designfilt

پس برای طراحی فیلتر باترورث میان گذر در متلب با این مشخصات داده شده داریم :

1
2
3
4
5
clc
[A,B,C,D] = butter(10,[500 560]/750);
d = designfilt('bandpassiir','FilterOrder',20, ...
'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...
'SampleRate',1500);

اگر بخواهیم فیلتر باترورث میان گذر در متلب را به صورت مرتبه ی دوم در نرم افزار متلب رسم نماییم از کد زیر استفاده خواهیم کرد :

1
2
3
4
clc
sos = ss2sos(A,B,C,D);
fvt = fvtool(sos,d,'Fs',1500);
legend(fvt,'butter','designfilt')

 که در صورت اجرای کد بالا در نرم افزار متلب ، اندازه ی فیلتر میان گذر باترورث به صورت زیر رسم خواهد شد :

طراحی فیلتر میان گذر باترورث در متلب

 

در این پست با برخی از فیلتر های بالا گذر ، میان گذر ، میان نگذر باترورث در نرم افزار متلب آشنا شدیم.

در پست های آینده سایت به بررسی فیلتر های آنالوگ پایین گذر باترورث از نوع IIR و … خواهیم پرداخت .

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

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.