طراحی فیلتر باترورث در نرم افزار متلب
برای طراحی فیلتر باترورث در نرم افزار متلب ،ابتدا با استفاده از تابع buttord ، درجه فیلتر مورد نظر را تعیین می کنیم . در این قسمت باید تمامی فرکانس ها را نرمالیزه کنیم یعنی تمامی فرکانس های موجود را بر فرکانس نایکوئیست تقسیم کنیم . سپس با استفاده از تابع butter صورت و مخرج تابع تبدیل را محاسبه می کنیم . سپس می توانیم با استفاده از تابع gain که خودمان آن را ایجاد می کنیم ، گین یا بهره تابع تبدیل را محاسبه کنیم و در نهایت با استفاده از تابع plot نمودار این تابع طراحی شده را رسم می کنیم .
برای مثال میخواهیم یک فیلتر میان نگذر باترورث با مشخصات زیر طراحی کنیم :
فرکانس باند عبور : 0.3 و 0.7
فرکانس باند نگذر : 0.4 و 0.6
تضعیف باند گذر : 0.4dB
تضعیف باند نگذر : 50dB
متن برنامه به صورت زیر می باشد :
% Design of a Butterworth Bandstop Digital Filter
Ws = [0.4 0.6]; Wp = [0.3 0.7]; Rp = 0.4; Rs = 50;
% Estimate the Filter Order
[N1, Wn1] = buttord(Wp, Ws, Rp, Rs);
% Design the Filter
[num,den] = butter(N1,Wn1,'stop');
% Display the transfer function
disp('Numerator coefficients are ');disp(num);
disp('Denominator coefficients are ');disp(den);
% Compute the gain response
[g,w] = gain(num,den);
% Plot the gain response
plot(w/pi,g);grid
axis([0 1 -60 5]);
xlabel('\omega /\pi'); ylabel('Gain, dB');
title('Gain Response of a Butterworth Bandstop Filter / *** www.Hajihoseini.ir ***');
قبل از اجرای این دستورات، باید تابع گین را تعریف کنیم. کد تابع گین به صورت زیر می باشد :
function [g,w] = gain(num,den)
w = 0:pi/255:pi;
h = freqz(num,den,w);
g = 20*log10(abs(h));
در نهایت خروجی این برنامه به صورت زیر می باشد :
اگر با توابع استفاده شده آشنا نیستید در help برنامه متلب تمامی آنها به صورت کامل توضیح داده شده است .
سلام و خسته نباشید، چرا در دستور freqz سه تا متغیر تعریف کردین؟ هر کدوم چی هستند؟ من در help متلب این دستور را با این متغیر ها ندیدم.