用双线性变换法设计IIR 滤波器MATLAB实现

2022-07-20 14:27:33 浏览数 (1)

一、实验目的

1.掌握双线性变换法设计IIR 数字滤波器的原理及具体设计方法。 2.观察用双线性变换法设计的滤波器的时域特性和频域特性,比较所设计的数字滤波器的 和相应模拟滤波器的频域特性,了解双线性变换法的特点。 3 熟悉双线性变化法设计巴特沃兹、切比雪夫和椭圆型数字滤波器的全过程。 二、实验原理 在滤波器的设计过程中,逼近是一个最重要的环节,所谓的逼近就是根据性能指标的要求, 对理想特性进行逼近,以求得一个因果、稳定且可实现的传递函数。 有以下变换方法:

 四、实验报告要求及思考题 1.简述实验目的及原理 2.整理好经过运行并证明是正确的实验程序并加上注释。绘出相应的图形。 3.双线性变换法有什么优点,这种变换方法怎样解决频率轴的非线性畸变问题?MATLAB 滤 波器设计子程序设计数字低通滤波器的时候,函数采用的使脉冲响应不变法还是双线性变换 法?

代码语言:javascript复制
wp=0.2*pi;
ws=0.3*pi;
rp=1;
as=15;
Fs=1000;
T=1/Fs;
op=(2/T)*tan(wp/2);
os=(2/T)*tan(ws/2);
figure;
[n,oc]=buttord(op,os,rp,as,'s');
[z,p,k]=buttap(n);
b=k*real(poly(z));
a=real(poly(p));
[b,a]=lp2lp(b,a,oc);
[b,a]=bilinear(b,a,Fs);
[H,w]=freqz(b,a);
subplot(221),plot(w/pi,abs(H));
title('巴特幅频特性');xlabel('单位:Xpi');
set(gca,'Xtick',[0.2,0.3]);grid;
subplot(222),plot(w/pi,angle(H));title('巴特相频特性');xlabel('单位:Xpi');
set(gca,'Xtick',[0.2,0.3]);grid;
subplot(223),plot(w/pi,20*log10(abs(H)/max(abs(H))));title('巴特分贝幅频特性');
xlabel('单位:Xpi');
set(gca,'Xtick',[0.2,0.3]);grid;
subplot(224),grpdelay(b,a);
figure;
[n,oc]=cheb1ord(op,os,rp,as,'s');
[z,p,k]=cheb1ap(n,rp);
b=k*real(poly(z));
a=real(poly(p));
[b,a]=lp2lp(b,a,oc);
[b,a]=bilinear(b,a,Fs);
[H,w]=freqz(b,a);
subplot(221),plot(w/pi,abs(H));
title('切比1幅频特性');xlabel('单位:Xpi');set(gca,'Xtick',[0.2,0.3]);grid;
subplot(222),plot(w/pi,angle(H));title('切比1相频特性');xlabel('单位:Xpi');
set(gca,'Xtick',[0.2,0.3]);grid;
subplot(223),plot(w/pi,20*log10(abs(H)/max(abs(H))));title('切比1分贝幅频特性');
xlabel('单位:Xpi');
set(gca,'Xtick',[0.2,0.3]);grid;
subplot(224),grpdelay(b,a);
figure;
[n,oc]=cheb2ord(op,os,rp,as,'s');
[z,p,k]=cheb2ap(n,as);
b=k*real(poly(z));
a=real(poly(p))
[b,a]=lp2lp(b,a,oc);
[b,a]=bilinear(b,a,Fs);
[H,w]=freqz(b,a);
subplot(221),plot(w/pi,abs(H));
title('切比2幅频特性');xlabel('单位:Xpi');set(gca,'Xtick',[0.2,0.3]);grid;
subplot(222),plot(w/pi,angle(H));title('切比2相频特性');xlabel('单位:Xpi');
set(gca,'Xtick',[0.2,0.3]);grid;
subplot(223),plot(w/pi,20*log10(abs(H)/max(abs(H))));title('切比2分贝幅频特性');
xlabel('单位:Xpi');set(gca,'Xtick',[0.2,0.3]);grid;
subplot(224),grpdelay(b,a);
figure;
[n,oc]=ellipord(op,os,rp,as,'s');
[z,p,k]=ellipap(n,rp,as);
b=k*real(poly(z));
a=real(poly(p));
[b,a]=lp2lp(b,a,oc);
[b,a]=bilinear(b,a,Fs);
[H,w]=freqz(b,a);
subplot(221),plot(w/pi,abs(H));
title('椭圆幅频特性');xlabel('单位:Xpi');set(gca,'Xtick',[0.2,0.3]);grid;
subplot(222),plot(w/pi,angle(H));title('椭圆相频特性');xlabel('单位:Xpi');
set(gca,'Xtick',[0.2,0.3]);grid;
subplot(223),plot(w/pi,20*log10(abs(H)/max(abs(H))));title('椭圆分贝幅频特性');
xlabel('单位:Xpi');set(gca,'Xtick',[0.2,0.3]);grid;
subplot(224),grpdelay(b,a);

0 人点赞