数字信号处理实验七IIR数字滤波器的MATLAB实现.docx

上传人:b****1 文档编号:14581489 上传时间:2023-06-24 格式:DOCX 页数:11 大小:120.64KB
下载 相关 举报
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第1页
第1页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第2页
第2页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第3页
第3页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第4页
第4页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第5页
第5页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第6页
第6页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第7页
第7页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第8页
第8页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第9页
第9页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第10页
第10页 / 共11页
数字信号处理实验七IIR数字滤波器的MATLAB实现.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字信号处理实验七IIR数字滤波器的MATLAB实现.docx

《数字信号处理实验七IIR数字滤波器的MATLAB实现.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验七IIR数字滤波器的MATLAB实现.docx(11页珍藏版)》请在冰点文库上搜索。

数字信号处理实验七IIR数字滤波器的MATLAB实现.docx

数字信号处理实验七IIR数字滤波器的MATLAB实现

实验七 IIR数字滤波器的MATLAB实现

一、实验目的:

要求掌握IIR数字滤波器的设计原理、设计方法和设计步骤;能根据给定的滤波器指标进行滤波器设计;掌握数字巴特沃斯滤波器、数字切比雪夫滤波器的设计原理和步骤。

二、实验仪器:

电脑一台,MATLAB6.5或更高级版本软件一套。

三、实验内容:

(一)实验原理及实例分析

1.IIR数字滤波器的传递函数及特点

设IIR滤波器的输入序列为x(n),则IIR滤波器的输入序列x(n)与输出序列y(n)之间的关系可以用下面的方程式表示:

其中,

是滤波器的系数,其中

中至少有一个非零。

与之相对应的差分方程为:

由传递函数可以发现无限常单位冲激响应滤波器有如下特点:

(1)单位冲激响应h(n)是无限长的。

(2)系统传递函数H(z)在有限z平面上有极点存在。

(3)结构上存在着输出到输入的反馈,也就是结构上是递归型的。

2.IIR数字滤波器的设计与实现

IIR数字滤波器的设计有多种方法,如频率变换法、数字域直接设计以及计算辅助设计等。

下面只介绍频率变换设计法。

首先考虑由模拟低通滤波器到数字低通滤波器的转换,其基本的设计过程如下:

(1)将数字滤波器的技术指标转换为模拟滤波器的技术指标;

(2)设计模拟滤波器G(S);

(3)将G(S)转换成数字滤波器H(Z);

在低通滤波器的设计基础上,可以得到数字高通、带通、带阻滤波器的设计流程如下:

(1)给定数字滤波器的设计要求(高通、带阻、带通);

(2)转换为模拟(高通、带阻、带通)滤波器的技术指标;

(3)转换为模拟低通滤波器的指标;

(4)设计得到满足第三步要求的低通滤波器传递函数;

(5)通过频率转换得到模拟(高通、带阻、带通)滤波器;

(6)变换为数字(高通、带阻、带通)滤波器。

在MATLAB中设计IIR滤波器的方法及其它们所用到的函数如表6-1所示。

表7-1MATLAB中设计IIR滤波器的方法列表

方法

描述

函数

模拟原型法

采用经典低通滤波器作为

连续域上的设计模型,通

过频率变换得到IIR数字

滤波器,最后进行离散化处理

完整设计函数:

Beself,butter,cheby1,cheby2,ellip

滤波器的阶估计函数:

Buttord,cheb1ord,cheb2ord,ellipord

低通模拟滤波器原型函数:

beselap,buttap,cheb1ap,cheb2ap,ellipap

频域变换函数:

Lp2bp,lp2bs,lp2hp,lp2lp

其他函数:

Bilinear,impinvar

直接设计方法

直接在离散时域上估计线

性的幅度响应

yulewalk

通用butterworth

设计方法

使用butterworth设计低通

数字滤波器

Maxflat

参数建模方法

寻找接近于所需要设计的

滤波器的通用原型

时域上的建模函数:

Lpc,prony,stmcb

频域上的建模函数:

Invfreqs,invfreqz

 

 

 

表7-2频率转换函数列表

频率转换

转换函数

低通到低通

[numt,dent]=lp2lp(num.den,w0)

[At,Bt,Ct,Dt]=lp2lp(A,B,C,D,w0)

低通到高通

[numt,dent]=lp2hp(num.den,w0)

[At,Bt,Ct,Dt]=lp2hp(A,B,C,D,w0)

低通到带通

[numt,dent]=lp2bp(num.den,w0)

[At,Bt,Ct,Dt]=lp2bp(A,B,C,D,w0)

低通到带阻

[numt,dent]=lp2bs(num.den,w0)

[At,Bt,Ct,Dt]=lp2bs(A,B,C,D,w0)

 

 

3.标准数字滤波器设计函数

MATLAB提供了一组标准的数字滤波器设计函数,大大简化了滤波器的设计过程。

1、butter

功能:

Butterworth模拟/数字滤波器设计

格式:

[b,a]=butter(n,wn,'ftype',’s’)

[b,a]=butter(n,wn,'ftype')

说明:

●选项中加入‘S’用于设计各种模拟Butterworth滤波器;不加设计各种数字Butterworth滤波器

●Ftype为缺省,设计低通滤波器

●Ftype=hign,设计高通滤波器

●Ftype=stop,设计带阻滤波器

【实例7-1】设计一个5阶Butterworth数字高通滤波器,阻带截止频率为250Hz。

设采样频率为1000Hz。

解:

源代码如下:

[b,a]=butter(5,250/500,'high')

[z,p,k]=butter(5,250/500,'high')

freqz(b,a,512,1000)

程序运行后,产生结果如下所示。

b=

0.0528 -0.2639  0.5279 -0.5279  0.2639 -0.0528

a=

1.0000 -0.0000  0.6334 -0.0000  0.0557  -0.0000

z=

1 1 1 1 1

p=

0.0000+0.7265i  0.0000-0.7265i 0.0000+0.3249i

0.0000-0.3249i  0.0000     

k=  0.0528

图7-1 5阶Butterworth数字高通滤波器

2、Cheby1、Cheby2

功能:

chebyshevI、chebyshevII型模拟/数字滤波器设计

格式:

[b,a]=cheby1(n,Rp,wn,'ftype',)

[b,a]=cheby2(n,Rs,wn,'ftype')

【实例7-2】设计一个7阶chebyshevII型数字低通滤波器,截止频率为3000Hz,

Rs=30dB。

设采样频率为1000Hz。

解:

源程序如下:

[b,a]=cheby2(7,30,300/500');

[z,p,k]=butter(5,250/500,'high');

freqz(b,a,512,1000)

程序运行后,产生如图6-2所示的波形。

图7-2 7阶chebyshevII型数字低通滤波器

4.冲激响应不变法

一般来说,在要求时域冲激响应能模仿模拟滤波器的场合,一般使用冲激响应不变法。

冲激响应不变法一个重要特点是频率坐标的变换是线性的,因此如果模拟滤波器的频响带限于折叠频率的话,则通过变换后滤波器的频响应可不失真的反映原响应与频率的关系。

【实例7-3】设计一个中心频率为500HZ,带宽为600Hz的数字带通滤波器,采样频率为1000Hz。

解:

源代码如下:

[z,p,k]=buttap(3);

[b,a]=zp2tf(z,p,k);

[bt,at]=lp2bp(b,a,500*2*pi,600*2*pi);

[bz,az]=impinvar(bt,at,1000); %将模拟滤波器变换成数字滤波器

freqz(bz,az,512,'whole',1000)

程序运行后,产生如图6-3所示的波形。

图7-3 用冲激响应不变法设计数字低通滤波器

5.双线性变换法

与冲激响应不变法比较,双线性变换的主要优点是靠频率的非线性关系得到S平面与Z平面的单值一一对应关系,整个值对应于单位圆一周。

所以从模拟传递函数可直接通过代数置换得到数字滤波器的传递函数。

【实例7-4】设计一个截止频率为200Hz的数字低通滤波器,采用频率为1000Hz。

解:

源代码如下:

[z,p,k]=buttap(3);

[b,a]=zp2tf(z,p,k);

[bt,at]=lp2lp(b,a,200*2*pi);

[bz,az]=bilinear(bt,at,1000);

freqz(bz,az,512,1000)

结果如图6-4所示:

bz=

0.0753  0.2259  0.2259  0.0753

az=

1.0000 -0.8266  0.5154 -0.0865

 

【实例7-5】基于Butterworth模拟滤波器原型,使用双线性转换设计数字滤波器,其中参数指标为:

通带截止频率:

通带波动值:

阻带截止频率:

阻带波动值:

解:

首先确定滤波器的阶数N,同时根据

确定

=0.5。

接着使用bilinear进行双线性转换,最后绘制在频域上的各种图像,其源代码如下:

%数字滤波器指标

wp=0.2*pi;

ws=0.3*pi;

Rp=1;

As=15;

%将数字滤波器指标反转变化为模拟滤波器的参数

T=1;

fs=1/T;

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

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

ep=sqrt(10^(Rp/10)-1);

Ripple=sqrt(1/(1+ep*ep));

Attn=1/(10^(As/20));

%butterworth原型模拟滤波器的设计

[cs,ds]=afd_butt(omegap,omegas,Rp,As);

%双线性变换

[b,a]=bilinear(cs,ds,T,fs);

%频域图像的绘制

freqz(b,a);

程序运行后,产生4阶的butterworth数字滤波器,频率响应如图6-5所示的波形。

图7-54阶Butterworth数字滤波器

(二)编程练习

1、基于chebyshev1型模拟滤波器原型使用冲激不变转换方法设计数字滤波器,要求具有下面的参数指标:

通带截止频率:

通带波动值:

阻带截止频率:

阻带波动值:

2、一个椭圆数字滤波器的设计,要求采用双线性变换方法,指标参数如下:

通带截止频率:

通带波动值:

阻带截止频率:

阻带波动值:

 

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

当前位置:首页 > 高中教育 > 理化生

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

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