% 采用冲激响应不变法将模拟系统函数Ha(s)=2/((s+1)*(s+3))转换为数字系统函数H(z),设采样周期T=0.5s.
b=[0 0 2];a=[1 4 3];
T=0.5;
fs=1/T;
[bz,az]=impinvar(b,a,fs)%冲激响应不变法,b和a分别为模拟系统函数的分子和分母多项式系数,fs为采样频率,返回bz和az分别为数字滤波器的分子和分母多项式系数.

% 采用双线性变换法设计切比雪夫I型低通数字滤波器,要求技术指标为:Wp=0.2pi,Rp=1dB,Ws=0.4pi,Rs=15dB,T=1s.
wp=0.2*pi;ws=0.4*pi;
Rp=1;Rs=15;T=1;fs=1/T;
monip=2/T*tan(wp/2);%由数字滤波器指标wp转化为模拟滤波器指标monip
monis=2/T*tan(ws/2);%由数字滤波器指标ws转化为模拟滤波器指标monis
[N,Wn]=cheb1ord(monip,monis,Rp,Rs,'s');%由模拟滤波器指标返回切比雪夫I型滤波器的参数N,Wn
[B,A]=cheby1(N,Rp,Wn,'s');%由切比雪夫I型滤波器的参数N,Rp,Wn返回模拟滤波器的分子和分母多项式的系数B,A
[b,a]=bilinear(B,A,fs);%由模拟滤波器的分子和分母多项式系数B,A和采样频率fs通过双线性变换法返回数字滤波器的分子和分母多项式系数b,a.
[h,w]=freqz(b,a,256);%由数字滤波器的分子和分母多项式系数b,a返回频率w及相应的频率响应.
figure(2)
plot(w/pi,20*log10(abs(h)));
grid;
xlabel('f in pi unit');
ylabel('gain in db');
title('双线性变换法设计切比雪夫I型低通数字滤波器');

% 实验任务
% 设计一 IIR 数字带通滤波器,给定指标为
% (1) 200Hz600Hz,衰减>20dB
% (3)抽样频率 fs=2kHz
% (1)用巴特沃斯滤波器,冲击响应不变法;
% (2)用巴特沃斯滤波器,双线性变换法;
% (3)用切比雪夫滤波器,冲击响应不变法;
% (4)用切比雪夫滤波器,双线性变换法。
%(1)用巴特沃斯滤波器,冲击响应不变法;
fs=2000;
Wp=2*pi*[200,400]; %模拟
Ws=2*pi*[100,600]; %模拟
Rp=2;
Rst=20;
[N,Wn]=buttord(Wp,Ws,Rp,Rst,'s');%'s'表示模拟滤波器,N 为阶数,Wn 为 3dB 截止频率.
[B,A]=butter(N,Wn,'s');%返回模拟滤波器的系统函数,B 为分子多项式,A 为分母多项式.
[bz,az]=impinvar(B,A,fs);%冲激响应不变法,B和A分别为模拟系统函数的分子和分母多项式系数,fs为采样频率,返回bz和az分别为数字滤波器的分子和分母多项式系数.
[h,w]=freqz(bz,az,256);%由数字滤波器的分子和分母多项式系数bz,az返回频率w及相应的频率响应.
figure(3)
subplot(2,2,1)
plot(w/pi,20*log10(abs(h)));
grid;
xlabel('f in pi');
ylabel('gain in db');
title('巴特沃斯滤波器,冲击响应不变法')
% (2)用巴特沃斯滤波器,双线性变换法;
fs=2000;
T=1/fs;
Wp=2*pi*[200,400]; %模拟
Ws=2*pi*[100,600]; %模拟
Rp=2;
Rst=20;
Wp=Wp*T; %数字
Ws=Ws*T; %数字
monip=2/T*tan(Wp/2);%由数字滤波器指标wp转化为模拟滤波器指标monip
monis=2/T*tan(Ws/2);%由数字滤波器指标ws转化为模拟滤波器指标monis
[N,Wn]=buttord(monip,monis,Rp,Rst,'s');%'s'表示模拟滤波器
[B,A]=butter(N,Wn,'s');%返回模拟滤波器的系统函数,B 为分子多项式,A 为分母多项式.
[bz,az]=bilinear(B,A,fs);%由模拟滤波器的分子和分母多项式系数B,A和采样频率fs通过双线性变换法返回数字滤波器的分子和分母多项式系数b,a.
[h,w]=freqz(bz,az,256);%由数字滤波器的分子和分母多项式系数bz,az返回频率w及相应的频率响应.
subplot(2,2,2)
plot(w/pi,20*log10(abs(h)));
grid;
xlabel('f in pi');
ylabel('gain in db');
title('巴特沃斯滤波器,双线性变换法')
% (3)用切比雪夫滤波器,冲击响应不变法;
fs=2000;
Wp=2*pi*[200,400]; %模拟
Ws=2*pi*[100,600]; %模拟
Rp=2;
Rst=20;
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rst,'s');%由模拟滤波器指标返回切比雪夫I型滤波器的参数N,Wn
[B,A]=cheby1(N,Rp,Wn,'s');%由切比雪夫I型滤波器的参数N,Rp,Wn返回模拟滤波器的分子和分母多项式的系数B,A
[bz,az]=impinvar(B,A,fs);%冲激响应不变法,B和A分别为模拟系统函数的分子和分母多项式系数,fs为采样频率,返回bz和az分别为数字滤波器的分子和分母多项式系数.
[h,w]=freqz(bz,az,256);%由数字滤波器的分子和分母多项式系数bz,az返回频率w及相应的频率响应.
subplot(2,2,3)
plot(w/pi,20*log10(abs(h)));
grid;
xlabel('f in pi');
ylabel('gain in db');
title('切比雪夫滤波器,冲击响应不变法')
%(4)用切比雪夫滤波器,双线性变换法。
fs=2000;
T=1/fs;
Wp=2*pi*[200,400]; %模拟
Ws=2*pi*[100,600]; %模拟
Rp=2;
Rst=20;
Wp=Wp*T; %数字
Ws=Ws*T; %数字
monip=2/T*tan(Wp/2);%由数字滤波器指标wp转化为模拟滤波器指标monip
monis=2/T*tan(Ws/2);%由数字滤波器指标ws转化为模拟滤波器指标monis
[N,Wn]=cheb1ord(monip,monis,Rp,Rst,'s');%由模拟滤波器指标返回切比雪夫I型滤波器的参数N,Wn
[B,A]=cheby1(N,Rp,Wn,'s');%由切比雪夫I型滤波器的参数N,Rp,Wn返回模拟滤波器的分子和分母多项式的系数B,A
[bz,az]=bilinear(B,A,fs);%由模拟滤波器的分子和分母多项式系数B,A和采样频率fs通过双线性变换法返回数字滤波器的分子和分母多项式系数b,a.
[h,w]=freqz(bz,az,256);%由数字滤波器的分子和分母多项式系数bz,az返回频率w及相应的频率响应.
subplot(2,2,4)
plot(w/pi,20*log10(abs(h)));
grid;
xlabel('f in pi');
ylabel('gain in db');
title('切比雪夫滤波器,双线性变换法')
