⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter_design.m

📁 This is a code for a Chebyschef filter
💻 M
字号:
clc;
clear all;

ws1 = 6/60*2*pi;
ws2 = 8/60*2*pi;
wp1 = 5/60*2*pi;
wp2 = 9/60*2*pi;

Omega_s1 = tan (ws1/2);
Omega_s2 = tan (ws2/2);
Omega_p1 = tan (wp1/2);
Omega_p2 = tan (wp2/2);

B = Omega_p2 - Omega_p1;
Omega_sq= Omega_p2* Omega_p1;



s = tf('s');
H = (1/(1+((s/(1.1199))^12)));
H_poles = pole(H);
H_left_poles = H_poles(1:6);
disp('The poles lying in the left-hand plane are:');
disp(H_left_poles)

disp(' ');
disp(' ');
K = 1.1199^6;
disp('K =')
disp(K)

H_analog_lowpass= zpk([],H_left_poles,K);

disp(' ');
disp(' ');
disp('The T.F. for analog LPF is:')
H_analog_lowpass
disp(' ');
disp(' ');

%calculating the coefficients of den of H_analog_lowpass
[H_analog_lowpass_num,H_analog_lowpass_den,dummy]= tfdata(H_analog_lowpass,'v');






%realising H_analog_lowpass as three seperate filters in cascade (this will
%ease the substitution required in the 7th part)
H1= zpk([],H_left_poles(1:2),1)
H2= zpk([],H_left_poles(3:4),1);
H3= zpk([],H_left_poles(5:6),1);

[H1_num,H1_den,dummy]= tfdata(H1,'v');
[H2_num,H2_den,dummy]= tfdata(H2,'v');
[H3_num,H3_den,dummy]= tfdata(H3,'v');


q=((B*s)/(s^2+Omega_sq));
% reverting to analog bandpass from analog lowpass.

H1_actual= 1/(  (q^2)   +   (q*H1_den(2))    +   H1_den(3)  );
H1_actual = minreal(H1_actual);

H2_actual= 1/(  (q^2)    +    (q*H2_den(2))   +     H2_den(3)  );
H2_actual = minreal(H2_actual);

H3_actual= 1/(  (q^2)    +    (q*H3_den(2))   +     H3_den(3)  );
H3_actual = minreal(H3_actual);

disp('7) Analog Transfer for the appropriate filter:');
H_actual = H1_actual * H2_actual * H3_actual * K
disp(' ');
disp(' ');






z=tf('z');

r=((B*((z-1)/(z+1)))/(((z-1)/(z+1))^2+Omega_sq));

H1_discrete= 1/(  (r^2)   +   (r*H1_den(2))    +   H1_den(3)  );
H1_discrete = minreal(H1_discrete);

H2_discrete= 1/(  (r^2)    +    (r*H2_den(2))   +     H2_den(3)  );
H2_discrete = minreal(H2_discrete);

H3_discrete= 1/(  (r^2)    +    (r*H3_den(2))   +     H3_den(3)  );
H3_discrete = minreal(H3_discrete);


disp('8) Discrete Time Filter Transfer Function: ')
H_discrete = H1_discrete * H2_discrete * H3_discrete * K

[H_discrete_num,H_discrete_den,dummy]= tfdata(H_discrete,'v');

[a,b]=freqz(H_discrete_num,H_discrete_den);

plot(b,abs(a));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -