数字的信号处理Matlab实验三IIR数字的滤波器地设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XXXX 大学XXXX 学院
实验名称 IIR 数字滤波器的设计
实验目的:
加深理解IIR 数字滤波器的时域特性和频域特性,掌握IIR 数字滤波器的设计原理与设计方法,以及IIR 数字滤波器的应用。

实验内容:
IIR 数字滤波器一般为线性移不变的因果离散系统,N 阶IIR 数字滤波器的系统函数可以表达为-1z 的有理多项式,即 -1
-1-2-M =0012-1-2-N -112=1z +z +z ++z (z)=
=1+z +z ++z 1+z
M j j M N N
i i b b b b b H a a a a ∑∑ 式中:系数i a 至少有一个非零。

对于因果IIR 数据滤波器,应满足M N ≤。

IIR 数字滤波器的设计主要通过成熟的模拟滤波器设计方法来实现。

首先在频域将数字滤波器设计指标转换为模拟滤波器设计指标,然后将任意的模拟滤波器为原型模拟低通滤波器指标,根据模拟滤波器的设计指标来设计出模拟低通滤波器(s)LP H ,然后又(s)LP H 经过相应的复频域转换得到H(s),最后又H(s)经过脉冲响应不变法或双线性变换法得到所需要的IIIR 数字滤波器H(z)。

由此可见,IIR 数字滤波器设计的重要环节是模拟滤波器的设计。

设计模拟低通滤波器的主要方法有Butterwort 、Chebyshev 、和椭圆等滤波器设计方法。

实验步骤
1.Butterwort 数字滤波器设计
(1) Butterwort 滤波器是通带阻带都单调衰减的滤波器。

调用buttord 函数可以确定巴特沃斯滤波器的阶数,其格式为:
[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来进行归一化。

(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,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=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'); %原型的阶数和截止频率的计算
[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(bd,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|');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.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,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'); %之图背景为白色
输出图像结果如下图:
例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'); %原型的阶数和截止频率的计算
[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,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|');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.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,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'); %之图背景为白色
输出图像结果如下图:
例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=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; %有零点计算分子系数向量
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=(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; %画刻度线
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,'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'); %之图背景为白色
输出图像结果如下图:
评定成绩。

相关文档
最新文档