实验六无限冲激响应(IIR)数字滤波器的三种结构 联系客服

发布时间 : 星期日 文章实验六无限冲激响应(IIR)数字滤波器的三种结构更新完毕开始阅读95e3c871376baf1ffc4fad7d

(数字信号处理)实验报告

实验名称 实验六无限冲激响应(IIR)数字滤波器的三种结构 实验时间 年 月 日 专业班级 学 号 姓 名

成 绩 教师评语:

一、实验目的

1、掌握IIR滤波器的直接II型、级联型和并联型三种结构的基本原理和特点。 2、掌握利用MATLAB实现IIR滤波器的三种结构的程序设计方法,并能够进行三者之间的相互转换。

3、掌握滤波器频响特性的绘制方法。 二、实验原理与计算方法

按照结构划分数字滤波器,有递归式和非递归式两种。递归式数字滤波器的差分方程为

y(n)??ak?1Nky(n?k)??bx(n?i) (1)

ii?1M其中至少有一个ak?0.非递归式数字滤波器的差分方程为 y(n)??bx(n?i) (2)

ii?1M可以看出递归式数字滤波器的响应y(n)不仅与激励x(n)有关,而且与以前的输出信号y(n?k)有关;而非递归式数字滤波器的响应y(n)仅只与激励x(n)有关。

按照单位样值响应划分数字滤波器,则有无限冲激响应(IIR)和有限冲激响应(FIR)之分。IIR滤波器是递归式的,差分方程如(1)式所示,FIR滤波器一般是非递归式的,差分方程如(2)式所示。

IIR滤波器常用的典型结构有直接II型、级联型和并联型,分别介绍如下: 1、直接II型(也称为正准型结构) 根据(1)式,IIR滤波器的传输函数为

?bzkN?k H(z)?k?0N (3)

kz?k1??ak?1其中已假设(1)式中的N?M,对于其它情况,则可令相应的某些系数为零。

令 H1(z)??k?0Nbkz?k, H2(z)?1?1?ak?1N

kz?k则有 H(z)?H1(z)H2(z) (4) 由此可以得到相应的时域中激励x(n)与响应y(n)之间的关系为

Ny2(n)??ak?1Nkky2(n?k)?x(n)

y(n)? (5)

y2(n?k)?bk?0其中y2(n)是与(4)式中的H2(z)相应的中间函数序列。

由(5)式确定的直接II型的信号流图如图

(n) y2(n) b0 y(n)

6-1所示,其中将中间的两条延时链合并为一条,x

实际的信号流将按(5)式分成两个延时链独立 z-1 a b 运行。编程时,用三个数组分别存放系数ak,bk和 1 z-1 1y2(n?k),k?1,2,?,N。由图可以看出,y2(n) a2 b2 -1沿中间的延时链自上向下传播过程中将逐级向 z aN-1 bN-1 右移位,每一级y2(n?k)向左边与ak的乘积按 z-1 aN bN k?1,2,?,N累加,再和x(n)相加,得到的y2(n) 沿中间的延时链又自上向下传播逐级向右移位,

图 6-1 直接II型结构信号流

每一级y2(n?k)向右边与bk的乘积按

k?0,1,2,?,N累加,其结果就是对应于激励x(n)的响应y(n)。然后y2(n)向右移位一个单位时间,输入激励x(n)计算下一个时刻的响应y(n)。

直接II型结构具有简单直观的典型网络结构形式,在计算机上很容易实现。但是它对系数ak,bk的量值变化比较敏感,ak,bk直接确定了系统零、极点的位置,从而影响到系统的性能。尤其当阶数N较高时,系统对系数的字长效应很敏感,产生的误差也较大。

2、级联型结构

由于当直接II型结构传输函数阶数增加时,系数量化引起的误差影响到滤波器的性能,因此要采用其它形式的结构。

将(3)式的传输函数分子和分母进行因式分解,即用它的零、极点表示为

?(1?q H(z)?k?1N1k?1M1kz)?1?(bk?1N2k?1M20k?b1kz?1?b2kz?2) (6)

1k?(1?pkz?1)?(1?az?1?a2kz?2)其中N1?2N2?N,M1?2M2?N,分子和分母中的实系数二阶因子分别对应于共轭零、极点。可以将上式分子和分母中单根一阶因子作为二阶因子的一种特例,那么(6)式就可以表示为M个实系数二阶基本节级联的形式 H(z)??k?1Mb0k?b1kz?1?b2kz?21?a1kz?1?a2kz?2??Hk?1Mk(z) (7)

Hk(z)?b0k?b1kz?1?b2kz?21?a1kz?1?a2kz?2 (8)

其中Hk(z)为滤波器的二阶基本节,

?N?1?a1k,a2k,b0k,b1k,b2kM???为取整结果。

?2?

x(n) h1(n) b01 hM(n) b0M y(n)

z-1 z-1 a11 b11 a1M b1M z-1 z-1 a21 b21 a2M b2M

图 6-2 级联型结构信号流

则分别是第k个基本节的分母、分子系数,它们只关系到滤波器的某一对零、极点。级联型结构如图6-2所示,它是一系列二阶基本节Hk(z)的级联,每一个Hk(z)可以用直

接II型结构实现。

级联型结构的特点是对滤波器性能的调整比较方便,调整系数a1k,a2k,b0k,b1k,b2k,只单独涉及到第k级零、极点,而不会影响到其它任一级的零、极点,因而可以独立地控制滤

波器的各零、极点的分布。

3、并联型结构

这种结构将传输函数H(z)展开为部分分式,即表示为若干一阶和二阶基本节网络与一个常数B0之和

H(z)?B0??1?pk?1M1Bkkz?1??1?ak?1M2b0k?b1kz?1?1?a2kz?21kz (9)

其中M1?2M2?N,同样也可以统一表示为二阶基本节的形式 H(z)?B0??1?ak?1Mb0k?b1kz?11kz?1?a2kz?2?B0??Hk?1Mk(z) (10)

并联型结构信号流如图6-3所示,其中

B0

二阶基本节网络可以用直接II型结构实现,x(n) y1(n) b01 y(n) 程序设计也可参考直接型II结构的方法。并

z-1 联型结构也可以单独调整极点位置,但却不 a11 b11

-1

能象级联型结构那样直接控制零点的分布。 a 21 z 因为并联型结构各二阶基本节网络的零点并

yM(n)

不是整个系统函数的零点。因此,当要准确

-1

传输零点时,以采用级联型结构为宜。不过, z

a1M b1M 由于并联型基本节之间互不影响,所以运算 z-1

a2M 误差比级联型的要小一些。

通常,IIR滤波器用系统函数的有理式

(直接结构形式)描述,Matalb中提供相应 图 6-3 并联型结构信号流 的函数可以把直接型结构转换成级联和并联型结构。

在MATLAB中,直接型结构由两个行向量描述,b包含系数{bk},a包含系数{ak},可由filter函数实现。

要由已知的直接型结构实现级联型结构,可利用函数dir2cas根据直接型的系数{bk}和{ak}得到系数b0,{Bk,i}和{Ak,i},该函数把矢量b和a转换成K×3维矩阵B和A。首先计算b0,它等于b0/ a0,(a0≠1),然后通过给较短的矢量添零,使矢量b和a一样长。这就保证每一个双二阶环节的分子和分母均不为零。接着计算多项式B(z)和A(z)的根,用cplxpair函数把这些根以共轭复根对的次序排列,最后用poly函数把每一对根再转换成二阶分子或分母多项式。级联型由casfiltr函数实现,它把每个二阶环节的系数存放在矩阵B和A中,放在一个循环里,而在此循环中采用filter函数。输入被乘以b0,每个滤波器的输出作为下一级滤波器的输入,最后一个滤波器的输出即为总的输出。

函数cas2dir可以把级联形式转换成直接形式。这是一个包含几次多项式乘法的简单运算,在一个K次的循环中实用conv函数。

类似的,利用dir2par函数可以把直接型系数{bk}和{ak}转换成并联型系数{Bk,i}和{Ak,i},并在parfiltr函数中使用这些系数以实现并联形式。而par2dir函数则可用来实现并联形式转换成直接形式。

三种结构的IIR滤波器均可通过以下方式计算单位抽样响应。 delta=impseq(0,0,7);

hdir=filter(b,a,delta)%直接型结构

hcas=casfiltr(b0,B,A,delta) %直接型结构实现级联型结构 hpar=parfiltr(C,B,A,delta) %直接型结构实现并联型结构

传输函数为H(z)的滤波器的频率特性为H(ej?)?H(z)z?ej?。由于我们所讨论的滤波器都是稳定系统,其所有极点都在z平面的单位圆内,单位样值响应h(n)是一个无限长的衰减序列,所以要截取有限长的一段来作频率特性分析。截取的长度越长,逼近的程度越高。如果截取长度为N,滤波器的频率特性由Fourier变换得

H(ej?)??h(n)en?0N?1?j?n??h(n)cosn??j?h(n)sinn? (11)

n?0n?0N?1N?1

则滤波器的幅频特性和相频特性可表示为

?N?1??N?1?j? H(e)??h(n)cosn????h(n)sinn?? (12)

?????n?0??n?0?22??n?0 ?(?)?arctanN?1n?0?h(n)sinn? (13)

N?1?h(n)cosn?三、实验内容

设三阶滤波器的传输函数为

121?0.581z?4?0.211z?4 H(z)? -1?2?31-0.398?40z.247z5?0.043z22激励信号为

? x1(n)?e?ancosn?0RN(n) a?0.5, ?0?, N?40 2 x2(n)??(n)   ?20?n?20

根据所给定的滤波器系统函数和参数值,用三种结构实现该IIR数字滤波器结构,分别使激励x1(n)和x2(n)通过该滤波器,求出相应于不同激励的响应,作出响应信号的图形和幅频、相频特性曲线,并判断该滤波器为何种滤波器(低通、高通、带通、带阻)。

实验代码:

b=[1 0.5814 0.2114 0] a=[1 -0.3984 0.2475 -0.04322] delta=impseq(0,-10,10) hdir=filter(b,a,delta) [b0,B,A]=dir2cas(b,a) hcas=casfiltr(b0,B,A,delta) [C,B,A]=dir2par(b,a) hpar=parfiltr(C,B,A,delta) n=[0:40]

x1=exp(-0.5.*n).*cos(n.*(pi./2)) y1=filter(b,a,x1) y2=casfiltr(b0,B,A,x1) y3=parfiltr(C,B,A,x1) subplot(4,3,1); stem(x1,'.'); title('x1') subplot(4,3,4); plot(y1); title('直接型') subplot(4,3,5); plot(angle(y1)); title('直接型相频特性') subplot(4,3,6); plot(abs(y1));

title('直接型幅频特性')