1、XXXX大学XXXX学院 课程名称: 数字信号处理 班级: 姓名: 学号: 实验地点: 日期: 实验名称 IIR数字滤波器的设计 实验目的: 加深理解IIR数字滤波器的时域特性与频域特性,掌握IIR数字滤波器的设计原理与设计方法,以及IIR数字滤波器的应用。 实验内容: IIR数字滤波器一般为线性移不变的因果离散系统,N阶IIR数字滤波器的系统函数可以表达为的有理多项式,即 式中:系数至少有一个非零。对于因果IIR数据滤波器,应满足。 IIR数字滤波器的设计主要通过成熟的模拟滤波器设计方法来实现。 首先在频域将数字滤波器设计指
2、标转换为模拟滤波器设计指标,然后将任意的模拟滤波器为原型模拟低通滤波器指标,根据模拟滤波器的设计指标来设计出模拟低通滤波器,然后又经过相应的复频域转换得到H(s),最后又H(s)经过脉冲响应不变法或双线性变换法得到所需要的IIIR数字滤波器H(z)。 由此可见,IIR数字滤波器设计的重要环节是模拟滤波器的设计。设计模拟低通滤波器的主要方法有Butterwort、Chebyshev、与椭圆等滤波器设计方法。 实验步骤 1. Butterwort数字滤波器设计 (1) Butterwort滤波器是通带阻带都单调衰减的滤波器。调用buttord函数可以确定巴特沃斯滤波器的阶数,其
3、格式为:[N,Omegac]=buttord(Omegap,Omegas,Rp,As,’s’)。 其中,输入参数Rp,As分别为通带最大衰减与阻带最小衰减,以dB为单位;Omegap,Omegas分别为通带截止频率与阻带截止频率,‘s’说明所设计的是模拟滤波器。输出参数为滤波器的阶数,Omegac为3dB截止频率。 (2) 调用归一化巴特沃斯模拟原型滤波器的函数,其格式为 [z0,po,k0]=buttap(N) 其中,只要输入巴特沃斯滤波器的阶数,它就可以返回零点与极点数组z0、p0以及增益k0。当需要任意Omegac的未归一化的巴特沃斯滤波器时,就要用Omegac乘以p0或k0
4、来进行归一化。 (1) 调用脉冲响应不变法或双线性变换法来设计巴特沃斯数字滤波器的函数,其格式分别如下。 ① 脉冲响应不变法:[bd,ad]=impinvar(b,a,Fs)。 其中,b为模拟滤波器分子系数向量;a为模拟滤波器分母系数向量;Fs为采样频率; bd为数字滤波器的分子多项式系数;ad为数字滤波器的分母多项式系数。 ② 双线性变换法:[bd,ad]=bilinear(b,a,Fs),参数含义与impinvar一致。 2. Chebyshev I型数字滤波器设计 Chebyshev I型数字滤波器为通带纹波控制器:在通带呈现纹波特性,在阻带单调衰减。其格式如下: [N,
5、Omegac]= cheb1ord(Omegap,Omegas,Rp,As,’s’) [z0,p0,k0]= cheb1ap(N,Rp) 参数含义与buttord buttap中参数一致。 3. Chebyshev II型数字滤波器设计 Chebyshev II型数字滤波器为阻带纹波控制器:在阻带呈现纹波特性,在通带单调衰减。其格式如下: [N,Omegac]= cheb2ord(Omegap,Omegas,Rp,As,’s’) [z0,p0,k0]= cheb2ap(N,Rp) 实验结果及分析: 例3-1 实验代码 wp=0.4*pi; %数字通带频率 ws=
6、0.6*pi; %数字阻带频率 Rp=0.5; %通带波动(dB) As=50; %阻带波动(dB) Fs=1000; %置Fs=1000 OmegaP=wp*Fs; %原型通带频率 OmegaS=ws*Fs; %原型阻带频率 ep=sqrt(10^(Rp/10)-1); %通带波动参数 Ripple=sqrt(1/(1+ep*ep)); %通带波动 Attn=1/(10^(As/20)); %阻带衰减 %模拟巴特沃斯原型滤波器计算 [N,OmegaC]=buttord(OmegaP,OmegaS,Rp,As,'s'); %原型的
7、阶数与截止频率的计算 [z0,p0,k0]=buttap(N); %归一化巴特沃斯原型设计函数 p=p0*OmegaC;z=z0*OmegaC; %将零点极点乘以OmegaC, 得到非归一化零极点 k=k0*OmegaC^N; %将k()乘以Omegac^N,得到非归一化k ba=k*real(poly(z)); %有零点计算分子系数向量 aa=real(poly(p)); %有极点计算分母系数向量 [bd,ad]=impinvar(ba,aa,Fs); %调用脉冲响应不变法函数 %检验频率响应 [H,w]=freqz(b
8、d,ad,1000,'whole'); %计算数字系统频率响应 H=(H(1:1:501))';w=(w(1:1:501))'; %取其前一半值,并化为列向量 mag=abs(H); %求其幅特性 db=20*log10((mag+eps)/max(mag)); %化为分贝值 pha=angle(H); %求其相特性 grd=grpdelay(bd,ad,w); %求其群延迟 subplot(2,2,1);plot(w/pi,mag); title('幅度响应'); xlabel('');ylabel('|H
9、');axis([0,1,0,1.1]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]);grid on; %画刻度线 set(gca,'XTickMode','manual','YTick',[0,Attn,Ripple,1]); subplot(2,2,3);plot(w/pi,db); title('幅度(单位:dB)'); xlabel('频率(单位:pi)');ylabel('分贝');axis([0,1,-100,50]); set(gca,'XTickMode','manual','XTick',[0,0.
10、4,0.6,1]); %画刻度线 set(gca,'YTickMode','manual','YTick',[-100,-50,0,50]);grid on; set(gca,'YTickLabelMode','manual','YTickLabels',['-100','-50','0','50']); subplot(2,2,2);plot(w/pi,pha/pi); title('相位响应'); xlabel('');ylabel('单位:pi');axis([0,1,-1,1]); set(gca,'XTickMode','manual','XTick',[0,
11、0.4,0.6,1]); %画刻度线 set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid on; subplot(2,2,4);plot(w/pi,grd); title('群延迟'); xlabel('频率(单位:pi)');ylabel('样本');axis([0,1,0,20]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]); %画刻度线 set(gca,'YTickMode','manual','YTick',[0:2:20]);grid on;
12、 %之图形背景为白色 set(gcf,'color','w'); %之图背景为白色 输出图像结果如下图: 例3-2 实验代码 OmegaP=wp*Fs; %原型通带频率 OmegaS=ws*Fs; %原型阻带频率 ep=sqrt(10^(Rp/10)-1); %通带波动参数 Ripple=sqrt(1/(1+ep*ep)); %通带波动 Attn=1/(10^(As/20)); %阻带衰减 %模拟化切比雪夫I型原型滤波器计算 [N,OmegaC]=cheb1ord(OmegaP,OmegaS,Rp,As,'s');
13、原型的阶数与截止频率的计算 [z0,p0,k0]=cheb1ap(N,Rp); %归一化化切比雪夫I型设计函数 p=p0*OmegaC;z=z0*OmegaC; %将零点极点乘以OmegaC,得到非归一化零极点 k=k0*OmegaC^N; %将k()乘以Omegac^N,得到非归一化k ba=k*real(poly(z)); %有零点计算分子系数向量 aa=real(poly(p)); %有极点计算分母系数向量 [bd,ad]=impinvar(ba,aa,Fs); %调用脉冲响应不变法函数 %检验频率响应 [H,w]=freqz(bd,a
14、d,1000,'whole'); %计算数字系统频率响应 H=(H(1:1:501))';w=(w(1:1:501))'; %取其前一半值,并化为列向量 mag=abs(H); %求其幅特性 db=20*log10((mag+eps)/max(mag)); %化为分贝值 pha=angle(H); %求其相特性 grd=grpdelay(bd,ad,w); %求其群延迟 subplot(2,2,1);plot(w/pi,mag); title('幅度响应'); xlabel('');ylabel('|H|');axis([0,1,0,1.1])
15、 set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]);grid on; %画刻度线 set(gca,'XTickMode','manual','YTick',[0,Attn,Ripple,1]); subplot(2,2,3);plot(w/pi,db); title('幅度(单位:dB)'); xlabel('频率(单位:pi)');ylabel('分贝');axis([0,1,-100,50]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]); %
16、画刻度线 set(gca,'YTickMode','manual','YTick',[-100,-50,0,50]);grid on; set(gca,'YTickLabelMode','manual','YTickLabels',['-100','-50','0','50']); subplot(2,2,2);plot(w/pi,pha/pi); title('相位响应'); xlabel('');ylabel('单位:pi');axis([0,1,-1,1]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]);
17、画刻度线 set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid on; subplot(2,2,4);plot(w/pi,grd); title('群延迟'); xlabel('频率(单位:pi)');ylabel('样本');axis([0,1,0,20]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]); %画刻度线 set(gca,'YTickMode','manual','YTick',[0:2:20]);grid on; %之图形背景为白色 set(gc
18、f,'color','w'); %之图背景为白色 输出图像结果如下图: 例3-3 实验代码 wp=0.4*pi; %数字通带频率 ws=0.6*pi; %数字阻带频率 Rp=0.5; %通带波动(dB) As=50; %阻带波动(dB) %模拟原型指标频率逆映射 Fs=1000;T=1/Fs; OmegaP=(2/T)*tan(wp/2); %原型通带频率预修正 OmegaS=(2/T)*tan(ws/2); %原型阻带频率预修正 ep=sqrt(10^(Rp/10)-1); %通带波动参数 Ripple=
19、sqrt(1/(1+ep*ep)); %通带波动 Attn=1/(10^(As/20)); %阻带衰减 %模拟化切比雪夫I型原型滤波器计算 [N,OmegaC]=buttord(OmegaP,OmegaS,Rp,As,'s'); %原型的阶数与截止频率的计算 [z0,p0,k0]=buttap(N); %归一化化切比雪夫I型设计函数 p=p0*OmegaC;z=z0*OmegaC; %将零点极点乘以OmegaC,得到非归一化零极点 k=k0*OmegaC^N;%将k()乘以Omegac^N,得到非归一化k ba0=real(poly(z0));ba0=k0*ba0; %
20、有零点计算分子系数向量 aa0=real(poly(p0)); %有极点计算分母系数向量 ba=real(poly(z));ba=k*ba; %有零点计算分子系数向量 aa=real(poly(p)); %有极点计算分母系数向量 [bd,ad]=bilinear(ba,aa,Fs); %双线性变换 [bd1,ad1]=bilinear(ba0,aa0,Fs/OmegaC); %双线性变换 %绘图 figure(1);subplot(1,1,1) [H,w]=freqz(bd,ad,1000,'whole'); %计算数字系统频率响应 H=(H(1:1:501))';w=(
21、w(1:1:501))'; %取其前一半值,并化为列向量 mag=abs(H); %求其幅特性 db=20*log10((mag+eps)/max(mag)); %化为分贝值 pha=angle(H); %求其相特性 grd=grpdelay(bd,ad,w); %求其群延迟 subplot(2,2,1);plot(w/pi,mag); title('幅度响应'); xlabel('');ylabel('|H|');axis([0,1,0,1.1]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]);grid on; %画刻
22、度线 set(gca,'XTickMode','manual','YTick',[0,Attn,Ripple,1]); subplot(2,2,3);plot(w/pi,db); title('幅度(单位:dB)'); xlabel('频率(单位:pi)');ylabel('分贝');axis([0,1,-100,50]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]); %画刻度线 set(gca,'YTickMode','manual','YTick',[-100,-50,0,50]);grid on; set(gca,
23、'YTickLabelMode','manual','YTickLabels',['-100','-50','0','50']); subplot(2,2,2);plot(w/pi,pha/pi); title('相位响应'); xlabel('');ylabel('单位:pi');axis([0,1,-1,1]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]); %画刻度线 set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid on; subplot(2,2,4);plot(w/pi,grd); title('群延迟'); xlabel('频率(单位:pi)');ylabel('样本');axis([0,1,0,20]); set(gca,'XTickMode','manual','XTick',[0,0.4,0.6,1]); %画刻度线 set(gca,'YTickMode','manual','YTick',[0:2:20]);grid on; %之图形背景为白色 set(gcf,'color','w'); %之图背景为白色 输出图像结果如下图: 评定成绩






