数字信号IIR数字滤波器实验报告
- 格式:doc
- 大小:148.50 KB
- 文档页数:7
数字信号处理实验报告
姓名:张贤辉班级:078205130 第一题
wp=0.4*pi;ws=0.6*pi;ap=0.5;as=50;
%[b,a]=afd_butt(omgp,omgs,ap,as);
[N,wc]=buttord(wp,ws,ap,as,'s');
[b,a]=butter(N,wc,'s');
w=[0:1:500]*pi/500;
h=freqs(b,a,w);
subplot(221);plot(w/pi,abs(h));title('幅度响应');grid;
subplot(223);plot(w/pi,20*log10(abs(h)));title('幅度响应(dB)');grid;
subplot(222);plot(w/pi,angle(h)*180/pi);title('相频响应');grid;
subplot(224);impulse(b,a);tiltle('脉冲响应');grid;
第二题
T=1;Fs=1/T;
wpz=0.4;wsz=0.6;
%[b,a]=afd_butt(omgp,omgs,ap,as);
wp=(2/T)*tan(wpz*pi/2);
ws=(2/T)*tan(wsz*pi/2);
ap=0.5;as=50;
[N,wc]=buttord(wp,ws,ap,as,'s');
[b,a]=butter(N,wc,'s');
%w=[0:1:500]*pi/500;
[Bz,Az]=bilinear(b,a,Fs);
[h,w]=freqz(Bz,Az);
subplot(221);plot(w/pi,abs(h));title('幅度响应');grid;
subplot(223);plot(w/pi,20*log10(abs(h)));title('幅度响应(dB)');grid; subplot(222);plot(w/pi,angle(h));title('相频响应');grid;
n=[0:1:59];imp=[1;zeros(59,1)];y=filter(Bz,Az,imp);
subplot(224);plot(n,y);title('脉冲响应');grid;
T=1;Fs=1/T;
wpz=0.2;wsz=0.4;
%[b,a]=afd_butt(omgp,omgs,ap,as);
wp=(2/T)*tan(wpz*pi/2);
ws=(2/T)*tan(wsz*pi/2);
ap=0.25;as=50;
[N,wc]=buttord(wp,ws,ap,as,'s');
[b,a]=butter(N,wc,'s');
%w=[0:1:500]*pi/500;
[Bz,Az]=bilinear(b,a,Fs);
[h,w]=freqz(Bz,Az);
subplot(221);plot(w/pi,abs(h));title('幅度响应');grid;
subplot(223);plot(w/pi,20*log10(abs(h)));title('幅度响应(dB)');grid; subplot(222);plot(w/pi,angle(h));title('相频响应');grid;
n=[0:1:59];imp=[1;zeros(59,1)];y=filter(Bz,Az,imp); subplot(224);plot(n,y);title('脉冲响应');grid;
数字信号实验报告
姓名:张贤辉班级:078205130 一、实验目的
(1)熟悉双线性变换法设计IIR数字滤波器的原理与方法
(2)熟悉用脉冲响应不变法设计IIR数字滤波器的原理与方法
二、实验原理
理解脉冲响应变换和双线性变换原理,会用MTLAB设计基本的IIR数字滤波器
三、修改后的实验程序
功能函数
function [b,a]=u_buttap(N,OmegaC);
[z,p,k]=buttap(N);
p=p*OmegaC;
k=k*OmegaC^N;
B=real(poly(z));
b=k*B;
b0=k;
a=real(poly(p));
功能函数
function [b,a]=afd_butt(Omgp,Omgs,Ap,As);
if Omgp<=0
error('passband edge must be lager than 0')
end
if Omgs<=Omgp
error('Stopband edge must be lager than Passband edge')
end
if (Ap<=0)|(As<0)
error('PB ripple and/or SB attention must be lager than 0')
end
N=ceil((log10((10^(Ap/10)-1)/(10^(As/10)-1)))/(2*log10(Omgp/Omgs)));
fprintf('\n***Butterworth Filter Order=%2.0f\n',N);
OmegaC=Omgp/((10^(Ap/10)-1)^(1/(2*N)));
[b,a]=u_buttap(N,OmegaC);
(1)
T=1;Fs=1/T;
OmegaP=0.4*pi/T;OmegaS=0.6*pi/T;Ap=0.5;As=50;
%[b,a]=afd_butt(omgp,omgs,ap,as);
%[N,wc]=buttord(wp,ws,ap,as,'s');
%[b,a]=butter(N,wc,'s');
[cs,ds]=afd_butt(OmegaP,OmegaS,Ap,As);
%w=[0:1:500]*pi/500;
%h=freqs(b,a,w);
[b,a]=impinvar(cs,ds,Fs);
[h,w]=freqz(b,a);
subplot(2,2,1);plot(w/pi,abs(h));title('幅度响应');grid;
subplot(2,2,3);plot(w/pi,20*log10(abs(h)));title('幅度响应(dB)'); grid; subplot(2,2,2);plot(w/pi,angle(h)*180/pi);title('相频响应');grid;
n=[0:1:59];imp=[1;zeros(59,1)];y=filter(b,a,imp);
subplot(2,2,4);plot(n,y);title('脉冲响应');grid;
(2)
T=1;Fs=1/T;
wpz=0.4;wsz=0.6;
%[b,a]=afd_butt(omgp,omgs,ap,as);
wp=(2/T)*tan(wpz*pi/2);
ws=(2/T)*tan(wsz*pi/2);
ap=0.5;as=50;
%[N,wc]=buttord(wp,ws,ap,as,'s');
%[b,a]=butter(N,wc,'s');
[b,a]=afd_butt (OmegaP, OmegaS, AP, as);
[BZ, AZ]=bilinear(b,a,Fs);
[h,w]=freqz(Bz,Az);
subplot(221);plot(w/pi,abs(h));title('幅度响应');grid;
subplot(223);plot(w/pi,20*log10(abs(h)));title('幅度响应(dB)');grid;
subplot(222);plot(w/pi,angle(h));title('相频响应');grid;
n=[0:1:59];imp=[1;zeros(59,1)];y=filter(Bz,Az,imp);
subplot(224);plot(n,y);title('脉冲响应');grid;
四、实验总结
运行前应先将要计算的IIR数字滤波器功能函数在MALAB中生成脚本文件然后运行脚本文件,上图是用脉冲响应变换和双线性变换运行后生成的IIR数字滤波图。
从修改后
的波形图与预习前的图形一样,只有脉冲响应图形画错。
是由于第一题的程序写错导致的。