数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx

上传人:b****7 文档编号:16528313 上传时间:2023-07-14 格式:DOCX 页数:22 大小:179.42KB
下载 相关 举报
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第1页
第1页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第2页
第2页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第3页
第3页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第4页
第4页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第5页
第5页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第6页
第6页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第7页
第7页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第8页
第8页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第9页
第9页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第10页
第10页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第11页
第11页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第12页
第12页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第13页
第13页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第14页
第14页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第15页
第15页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第16页
第16页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第17页
第17页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第18页
第18页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第19页
第19页 / 共22页
数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx

《数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx(22页珍藏版)》请在冰点文库上搜索。

数字信号处理实验 matlab版 用双线性变换法设计IIR数字滤波器.docx

数字信号处理实验matlab版用双线性变换法设计IIR数字滤波器

实验21用双线性变换法设计IIR数字滤波器

(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word格式会让很多部分格式错误,)

XXXX学号处XXXX

一、实验目的

1.加深对双线性变换法设计IIR数字滤波器基本方法的了解。

2.掌握用双线性变换法设计数字低通、高通、带通、带阻滤波器的方法。

3.了解MATLAB有关双线性变换法的子函数。

二、实验容

1.双线性变换法的基本知识。

2.用双线性变换法设计IIR数字低通滤波器。

3.用双线性变换法设计IIR数字高通滤波器。

4.用双线性变换法设计IIR数字带通滤波器。

5.用双线性变换法设计IIR数字带阻滤波器。

三、实验环境

MATLAB7.0

四、实验原理

1.实验涉及的MATLAB子函数

Bilinear

功能:

双线性变换——将s域(模拟域)映射到z域(数字域)的标准方法,将模拟滤波器变换成离散等效滤波器。

调用格式:

[numd,dend]=bilinear(num,den,Fs);将模拟域传递函数变换为数字域传递函数,Fs为取样频率。

[numd,dend]=bilinear(num,den,Fs,Fp);将模拟域传递函数变换为数字域传递函数,Fs为取样频率,Fp为通带截止频率。

[zd,pd,kd]=bilinear(z,p,k,Fs);将模拟域零极点增益系数变换到数字域,Fs为取样频率。

[zd,pd,kd]=bilinear(z,p,k,Fs,Fp);将模拟域零极点增益系数变换到数字域,Fs为取样频率,Fp为通带截止频率。

[Ad,Bd,Cd,Dd]=bilinear(A,B,C,D,Fs);将模拟域状态变量系数变换到数字域,Fs为取样频率。

2.双线性变换法的基本知识

双线性变换法是将整个s平面映射到整个z平面,其映射关系为

  或

双线性变换法克服了脉冲响应不变法从s平面到z平面的多值映射的缺点,消除了频谱混叠现象。

但其在变换过程中产生了非线性的畸变,在设计IIR数字滤波器的过程中需要进行一定的预修正。

用MATLAB双线性变换法进行IIR数字滤波器设计的步骤(参见图19-1)与脉冲响应不变法设计的步骤基本相同:

(1)输入给定的数字滤波器设计指标;

(2)根据公式W=2[]Ttan[JB((]w[]2[JB))]进行预修正,将数字滤波器指标转换成模拟滤波器设计指标;

(3)确定模拟滤波器的最小阶数和截止频率;

(4)计算模拟低通原型滤波器的系统传递函数;

(5)利用模拟域频率变换法,求解实际模拟滤波器的系统传递函数;

(6)用双线性变换法将模拟滤波器转换为数字滤波器。

3.用双线性变换法设计IIR数字低通滤波器

例21-1采用双线性变换法设计一个巴特沃斯数字低通滤波器,要求:

wp=0.25p,Rp=1dB;ws=0.4p,As=15dB,滤波器采样频率Fs=100Hz。

解程序如下:

wp=0.25*pi;

ws=0.4*pi;

Rp=1;As=15;

ripple=10^(-Rp/20);Attn=10^(-As/20);

Fs=100;T=1/Fs;

Omgp=(2/T)*tan(wp/2);

Omgs=(2/T)*tan(ws/2);

[n,Omgc]=buttord(Omgp,Omgs,Rp,As,'s');

[z0,p0,k0]=buttap(n);

ba=k0*real(poly(z0));

aa=real(poly(p0));

[ba1,aa1]=lp2lp(ba,aa,Omgc);

%注意,以上4行求滤波器系数ba1、aa1的程序,可由下一条程序替代

%[ba1,aa1]=butter(n,Omgc,'s');

[bd,ad]=bilinear(ba1,aa1,Fs)

[sos,g]=tf2sos(bd,ad)

[H,w]=freqz(bd,ad);

dbH=20*log10((abs(H)+eps)/max(abs(H)));

subplot(2,2,1),plot(w/pi,abs(H));

ylabel('|H|');title('幅度响应');axis([0,1,0,1.1]);

set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);

set(gca,'YTickMode','manual','YTick',[0,Attn,ripple,1]);grid

subplot(2,2,2),plot(w/pi,angle(H)/pi);

ylabel('\phi');title('相位响应');axis([0,1,-1,1]);

set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);

set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid

subplot(2,2,3),plot(w/pi,dbH);title('幅度响应(dB)');

ylabel('dB');xlabel('频率(\pi)');axis([0,1,-40,5]);

set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);

set(gca,'YTickMode','manual','YTick',[-50,-15,-1,0]);grid

subplot(2,2,4),zplane(bd,ad);

axis([-1.1,1.1,-1.1,1.1]);title('零极图');

程序运行结果如下:

n=5

Omgc=103.2016

bd=0.00720.03620.07250.07250.03620.0072

ad=1.0000-1.94341.9680-1.07020.3166-0.0392

sos=1.00001.003601.0000-0.31930

  1.00002.00221.00221.0000-0.69840.2053

1.00001.99420.99421.0000-0.92570.5976

g=0.0072

频率特性如图21-1所示。

图21-1用双线性变换法设计的巴特沃斯数字低通滤波器特性

  由频率特性曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1dB、As≥15dB的设计指标要求,系统的极点全部在单位圆,是一个稳定的系统。

由n=5可知,设计的巴特沃斯数字低通滤波器是一个5阶的系统,原型Ha(s)在s=-∞处有5个零点,映射到z=-1处。

这个巴特沃斯数字低通滤波器的级联型传递函数应为

4.用双线性变换法设计IIR数字高通滤波器

例21-2采用双线性变换法设计一个椭圆数字高通滤波器,要求通带fp=250Hz,Rp=1dB;阻带fs=150Hz,As=20dB,滤波器采样频率Fs=1000Hz。

解程序如下:

fs=150;fp=250;Fs=1000;T=1/Fs;

wp=fp/Fs*2*pi;

ws=fs/Fs*2*pi;

Rp=1;As=20;

ripple=10^(-Rp/20);

Attn=10^(-As/20);

Omgp=(2/T)*tan(wp/2);

Omgs=(2/T)*tan(ws/2);

[n,Omgc]=ellipord(Omgp,Omgs,Rp,As,'s')

[z0,p0,k0]=ellipap(n,Rp,As);

ba=k0*real(poly(z0));

aa=real(poly(p0));

[ba1,aa1]=lp2hp(ba,aa,Omgc);

[bd,ad]=bilinear(ba1,aa1,Fs)

[H,w]=freqz(bd,ad);

dbH=20*log10((abs(H)+eps)/max(abs(H)));

subplot(2,2,1),plot(w/2/pi*Fs,abs(H),'k');

ylabel('|H|');title('幅度响应');axis([0,Fs/2,0,1.1]);

set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2]);

set(gca,'YTickMode','manual','YTick',[0,Attn,ripple,1]);grid

subplot(2,2,2),plot(w/2/pi*Fs,angle(H)/pi*180,'k');

ylabel('\phi');title('相位响应');axis([0,Fs/2,-180,180]);

set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2]);

set(gca,'YTickMode','manual','YTick',[-180,0,180]);grid

subplot(2,2,3),plot(w/2/pi*Fs,dbH);

title('幅度响应(dB)');axis([0,Fs/2,-40,5]);

ylabel('dB');xlabel('频率(\pi)');

set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2]);

set(gca,'YTickMode','manual','YTick',[-50,-20,-1,0]);grid

subplot(2,2,4),zplane(bd,ad);

axis([-1.1,1.1,-1.1,1.1]);title('零极图');

运行结果如下:

n=3

Omgc=2.0000e+003

bd=0.2545-0.43220.4322-0.2545

ad=1.00000.18900.71970.1574

频率特性如图21-2所示。

图21-2用双线性变换法设计椭圆高通数字滤波器

由频率特性曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1dB、As≥20dB的设计指标要求。

由n=3可知,设计的椭圆数字高通滤波器是一个3阶的系统,极点全部在Z平面的单位圆,是一个稳定的系统。

这个高通滤波器的传递函数应为

5.用双线性变换法设计IIR数字带通滤波器

例21-3采用双线性变换法设计一个切比雪夫Ⅰ型数字带通滤波器,要求:

通带wp1=0.3p,wp2=0.7p,Rp=1dB;阻带ws1=0.2p,ws2=0.8p,As=20dB,滤波器采样周期Ts=0.001s。

解程序如下:

wp1=0.3*pi;wp2=0.7*pi;

ws1=0.2*pi;ws2=0.8*pi;

Rp=1;As=20;

T=0.001;Fs=1/T;

Omgp1=(2/T)*tan(wp1/2);Omgp2=(2/T)*tan(wp2/2);

Omgp=[Omgp1,Omgp2];

Omgs1=(2/T)*tan(ws1/2);Omgs2=(2/T)*tan(ws2/2);

Omgs=[Omgs1,Omgs2];

bw=Omgp2-Omgp1;w0=sqrt(Omgp1*Omgp2);

[n,Omgn]=cheb1ord(Omgp,Omgs,Rp,As,'s')

[z0,p0,k0]=cheb1ap(n,Rp);

ba1=k0*real(poly(z0));

aa1=real(poly(p0));

[ba,aa]=lp2bp(ba1,aa1,w0,bw);

[bd,ad]=bilinear(ba,aa,Fs)

[H,w]=freqz(bd,ad);

dbH=20*log10((abs(H)+eps)/max(abs(H)));

subplot(2,2,1),plot(w/2/pi*Fs,abs(H),'k');

ylabel('|H|');title('幅度响应');axis([0,Fs/2,0,1.1]);

set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2]);

set(gca,'YTickMode','manual','YTick',[0,Attn,ripple,1]);grid

subplot(2,2,2),plot(w/2/pi*Fs,angle(H)/pi*180,'k');

ylabel('\phi');title('相位响应');axis([0,Fs/2,-180,180]);

set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2]);

set(gca,'YTickMode','manual','YTick',[-180,0,180]);grid

subplot(2,2,3),plot(w/2/pi*Fs,dbH);

title('幅度响应(dB)');axis([0,Fs/2,-40,5]);

ylabel('dB');xlabel('频率(\pi)');

set(gca,'XTickMode','manual','XTick',[0,fs,fp,Fs/2]);

set(gca,'YTickMode','manual','YTick',[-50,-20,-1,0]);grid

subplot(2,2,4),zplane(bd,ad);

axis([-1.1,1.1,-1.1,1.1]);title('零极图');

程序运行结果如下:

n=3

Omgn=1.0e+003*1.01913.9252

bd=0.07360.0000-0.22080.00000.2208-0.0000-0.0736

ad=1.00000.00000.97610.00000.85680.00000.2919

频率特性及零极点图形如图21-3所示。

图21-3用双线性变换法设计切比雪夫Ⅰ型带通数字滤波器

由频率特性曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1dB、As≥20dB的设计指标要求。

由n=3可知,由3阶的模拟低通原型用双线性变换法设计出来的切比雪夫Ⅰ型数字带通滤波器是一个6阶的系统,极点全部在Z平面的单位圆,是一个稳定的系统。

这个滤波器的传递函数应为

注意:

在使用[z0,p0,k0]=cheb1ap(n,Rp)设计模拟低通原型时,需要输入通带衰减Rp,即切比雪夫Ⅰ型模拟低通原型是以通带衰减Rp为主要设计指标的。

因此,由模拟低通原型变为数字带通(或带阻)滤波器时,使用lp2bp(或lp2bs)语句要求输入模拟通带带宽W0和中心频率BW,应采用通带截止频率来计算,即

bw=Omgp2-Omgp1;w0=sqrt(Omgp1*Omgp2);%[ZK(]模拟滤波器通带带

宽和中心频率

如果将例21-3改为:

采用双线性变换法设计一个切比雪夫Ⅱ型数字带通滤波器,其它条件不变,则需要修改下面几句程序:

bw=Omgs2-Omgs1;w0=sqrt(Omgs1*Omgs2);%[ZK(]模拟滤波器阻带带

宽和中心频率

[n,Omgn]=cheb2ord(Omgp,Omgs,Rp,As,'s')%计算阶数n和截止频率

[z0,p0,k0]=cheb2ap(n,As);%设计归一化的模拟原型滤波器

采用阻带截止频率来计算W0和BW,是因为切比雪夫Ⅱ型模拟低通原型是以阻带衰减As为主要设计指标的。

程序运行结果如下:

n=3

Omgn=1.0e+003*

1.66416.0234

bd=0.25370.0000-0.47330.00000.47330.0000-0.2537

ad=1.0000-0.00000.00080.00000.4206-0.0000-0.0343

频率特性及零极点图形如图21-4所示。

图21-4用双线性变换法设计切比雪夫Ⅱ型带通数字滤波器

由程序数据和曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1dB、As≥20dB的设计指标要求。

由n=3可知,由3阶的模拟低通原型用双线性变换法设计出来的切比雪夫Ⅱ型数字带通滤波器是一个6阶的系统,极点全部在z平面的单位圆,是一个稳定的系统。

这个滤波器的传递函数应为

6.用双线性变换法设计IIR数字带阻滤波器

  例21-4采用双线性变换法设计一个切比雪夫Ⅰ型数字带阻滤波器,要求:

下通带wp1=0.2p,上通带wp2=0.8p,Rp=1dB;阻带下限ws1=0.3p,阻带上限ws2=0.7p,As=20dB,滤波器采样频率Fs=1000Hz。

解由题目可知,本例只是将例21-3的条件改为相反,即将原带通滤波器通带的频率区域改为带阻滤波器阻带的频率区域,将原带通滤波器阻带的频率区域改为带阻滤波器通带的频率区域。

程序只需作5句修改:

ws1=0.3*pi;ws2=0.7*pi;

wp1=0.2*pi;wp2=0.8*pi;

[ba,aa]=lp2bs(ba1,aa1,w0,bw);

程序运行结果如下:

n=3

Omgn=1.0e+003*

0.64986.1554

bd=0.0736-0.00000.22080.00000.2208-0.00000.0736

ad=1.00000.0000-0.9761-0.00000.85680.0000-0.2919

频率特性及零极点图形如图21-5所示。

图21-5用双线性变换法设计切比雪夫Ⅰ型带阻数字滤波器

由程序数据和曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1dB、As≥20dB的设计指标要求。

由3阶的模拟低通原型用双线性变换法设计出来的切比雪夫Ⅰ型数字带阻滤波器是一个6阶的系统,极点全部在z平面的单位圆,是一个稳定的系统。

这个滤波器的传递函数应为

如果将例21-4改为:

采用双线性变换法设计一个切比雪夫Ⅱ型数字带阻滤波器,其它条件不变,则在上面程序的基础上与例21-3一样,修改下面几句程序:

bw=Omgs2-Omgs1;w0=sqrt(Omgs1*Omgs2);%[ZK(]模拟滤波器阻带带宽

和中心频率

[n,Omgn]=cheb2ord(Omgp,Omgs,Rp,As,'s')[KG*2]%计算阶数n和截止

频率

[z0,p0,k0]=cheb2ap(n,As);%设计归一化的模拟原型滤波器

程序运行结果如下:

n=3

Omgn=10.029339.8833

bd=0.25370.00000.4733-0.00000.47330.00000.2537

ad=1.0000-0.0000-0.0008-0.00000.4206-0.00000.0343

频率特性及零极点图形如图21-6所示。

图21-6用双线性变换法设计切比雪夫Ⅱ型带阻数字滤波器

由程序数据和曲线可知,该设计结果在通阻带截止频率处能满足Rp≤1dB、As≥20dB的设计指标要求。

由3阶的模拟低通原型用双线性变换法设计出来的切比雪夫Ⅱ型数字带阻滤波器是一个6阶的系统,极点全部在z平面的单位圆,是一个稳定的系统。

这个滤波器的传递函数应为

五、实验过程

1.用双线性变换法设计切比雪夫Ⅱ型数字滤波器,列出传递函数并描绘模拟和数字滤波器的幅频响应曲线。

(1)设计一个数字低通,要求:

通带wp=0.2p,Rp=1dB;阻带ws=0.35p,As=15dB,滤波器采样频率Fs=10Hz。

(2)设计一个数字高通,要求:

通带wp=0.35p,Rp=1dB;阻带ws=0.2p,As=15dB,滤波器采样频率Fs=10Hz。

(1)MATLAB程序如下:

wp=0.2*pi;

ws=0.35*pi;

Rp=1;As=15;

ripple=10^(-Rp/20);Attn=10^(-As/20);

Fs=10;T=1/Fs;

Omgp=(2/T)*tan(wp/2);

Omgs=(2/T)*tan(ws/2);

[n,Omgc]=cheb2ord(Omgp,Omgs,Rp,As,'s')

[z0,p0,k0]=cheb2ap(n,As);

ba=k0*real(poly(z0));

aa=real(poly(p0));

[ba1,aa1]=lp2lp(ba,aa,Omgc);

[bd,ad]=bilinear(ba1,aa1,Fs)

[sos,g]=tf2sos(bd,ad)

[H,w]=freqz(bd,ad);

dbH=20*log10((abs(H)+eps)/max(abs(H)));

subplot(2,2,1),plot(w/pi,abs(H));

ylabel('|H|');title('幅度响应');axis([0,1,0,1.1]);

set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);

set(gca,'YTickMode','manual','YTick',[0,Attn,ripple,1]);grid

subplot(2,2,2),plot(w/pi,angle(H)/pi);

ylabel('\phi');title('相位响应');axis([0,1,-1,1]);

set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);

set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid

subplot(2,2,3),plot(w/pi,dbH);title('幅度响应(dB)');

ylabel('dB');xlabel('频率');axis([0,1,-40,5]);

set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);

set(gca,'YTickMode','manual','YTick',[-50,-15,-1,0]);grid

subplot(2,2,4),zplane(bd,ad);

axis([-1.1,1.1,-1.1,1.1]);title('零极图');

运行结果如图1-1所示。

图1-1

(2)MATLAB程序如下:

Fs=1000;T=1/Fs;

wp=0.35*pi;

ws=0.2*pi;

fp=wp/(2*pi)*Fs;

fs=ws/(2*pi)*Fs;

Rp=1;As=15;

ripple=10^(-Rp/20);

Attn=10^(-As/20);

Omgp=(2/T)*tan(wp/2);

Omgs=(2/T)*tan(ws/2);

[n,Omgc]=cheb2ord(Omgp,Omgs,Rp,As,'s')

[z0,p0,k0]=cheb2ap(n,As);

ba=k0*real(poly(z0));

aa=real(poly(p0));

[ba1,aa1]=lp2hp(ba,aa,Omgc);

[bd,ad]=bilinear(ba1,aa1,Fs)

[H,w]=freqz(bd,ad);

dbH=20*log10((abs(H)+eps)/m

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2