基于matlab的IIR滤波器设计

  • 格式:doc
  • 大小:315.49 KB
  • 文档页数:7

基于Matlab的IIR滤波器的设计

摘要:

IIR(Infinite Impulse Response)数字滤波器,又名“无限脉冲响应数字滤波器”,或“递归滤波器”。其具有无限的脉冲响应。本文主要介绍了IIR数字滤波器的基本概念,以及借助Matlab设计IIR滤波器的方法,并举例介绍。

一、IIR数字滤波器

IIR滤波器的系统函数如式1.1所示

1.11100NkkkMrrrnnzbzbznhZXZYzH

由于它的脉冲响应序列nh是无限长的,故称无限冲激响应滤波器。IIR和FIR滤波器相比,优点是在满足相同性能指标要求条件下,IIR滤波器的阶数要明显低于FIR滤波器。但IIR滤波器的相位是非线性的

1)IIR滤波器经典设计

IIR滤波器设计的经典法,基于模拟滤波器变换原理,首先根据滤波器的指标技术设计出相应的模拟滤波器,然后再将设计好的模拟滤波器变换成满足给定技术指标的数字滤波器。

在Matlab中,IIR滤波器的经典设计法步骤如下:

→ → →

其中离散化的主要任务就是把模拟滤波器变换成数字滤波器,即把模拟滤波器的系数sH映射成数字滤波器的系统函数zH

从模拟滤波器到数字滤波器的变换技术,最重要的有两种:冲击不变法和双线性变换法。

(1)冲击不变法

设取样时间为T,则冲击不变为

nTnhha

模拟频率与数字频率之间存在的关系为

eeTjjT

S平面与Z平面之间的关系为

eSTZ

系统函数之间的关系为 模拟低通滤波器原型 频率变换 模拟离散化 IIR滤波器 kakTjsTzHH21

在给定数字低通滤波器指标p,s,Rp和As的情况下,设计zH按如下步骤:

① 选T,确定模拟频率

TTsspp

② 利用p,s,Rp和As设计模拟滤波器SHa

③ 利用部分分式展开,将SHa写成

NkkkaPRHSS1

④ 将模拟极点Pk变换成数字极点eTPk,这样得

NkTkZeRPZHk111

(2)双线性变换法

双线性变换是S域与Z域之间的最佳映射:

212111211sTsTZTSzz

或写成

0122zsTszT

因此S与Z之间为线性关系。

利用jS,得

221221TjTTjTz

由0得

2121jjz

因此

2tan222tan1TT 当给定数字滤波器指标p,s,Rp和As时,其设计步骤如下:

① 选T,通常1T

② 对p和s作预畸变:

2tan22tan2ssppTT

③ 按指标p,s,Rp,As设计模拟滤波器。

④ 最后,由

zzHTzHa11112

求出zH。

2)IIR滤波器的直接设计

IIR数字滤波器的经典设计法只限于几种标准的低通、高通、带通、带阻滤波器,而对于具有形状多多频滤波器的设计是无能为力的。

如果所设计的IIR滤波器幅频特性比较复杂,可采用最小二乘拟合给定的扶贫相应,使设计的滤波器幅频特性逼近期望的频率特性,这种方法称为IIR滤波器的直接设计法。

二、IMatlab设计IIR滤波器

在Matlab的"Siangal Processing Toolbox"中包含了信号处理中经常使用的函数,其中就包括了设计IIR数字滤波器所用函数:

(1)butter函数,可设计低通、带通、高通和带阻的数字Butterworth滤波器,其特性为使通带内的幅值响应最大限度的平坦

[b,a]=butter(n,Wn)

(2)cheby1函数,可设计低通、带通、高通和带阻的数字Chebyshev I型滤波器,其通带内为等波纹,阻带内为单调。

[b,a]=cheby1(n,Rp,Wn)

(3)cheby2函数可设计低通、带通、高通和带阻的数字Chebyshev II型滤波器,其通带内为单调,阻带内为等波纹。

[b,a]=cheby2(n,Rs,Wn)

(4)ellip函数可设计低通、带通、高通和带阻的数字椭圆滤波器,其通带阻带内均为等波纹。

[b,a]=ellip2(n,Rp,Rs,Wn)

(5)yulewalk函数利用对指定的频率响应进行最小二乘拟合的方法来设计递归的IIR数字滤波器

[b,a]=yulewalk(n,f,m)

可得到以b和a表示的n阶IIR滤波器,其幅频特性与由矢量f和m(幅值)所给定的特性近似匹配。

由此函数得到的滤波器可写为 zzzznnnaanbbbZAZBZH12112111

例如如下一段程序

f=[0 0.6 0.6 1];

m=[1 1 0 0];

[b,a]=yulewalk(8,f,m);

[h,w]=freqz(b,a,128);

plot(f,m,w/pi,abs(h),'--');

legend('ideal','yulewalk')

图2.1 yulewalk设计的低通滤波器

yulewalk函数允许我们自由定义滤波器的频率向量f和幅值向量m,因此该函数可设计具有任意波形的幅频响应的滤波器,包括多频滤波器。

三、IIR滤波器设计实例

用双线性变换法设计Chebyshev II型数字滤波器,其中2.0p,dBRp1,3.0s,dBAs15

例程如下所示:

wp=0.2*pi;

ws=0.3*pi; Rp=1;

As=15;

T=1;Fs=1/T;

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));

[cs,ds]=afd_chb2(OmegaP,OmegaS,Rp,As);

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

[C,B,A]=dir2cas(b,a);

[db,mag,pha,grd,w]=freqz_m(b,a);

figure(1);

plot(w/pi,mag,'k');title('Magnitude Response');

xlabel('frequency in \pi units');

ylabel('|H|');axis([0,1,0,1.1]);

set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1]);

set(gca,'YTickmode','manual','YTick',[0,Attn,Ripple,1]);grid

figure(2);

plot(w/pi,pha/pi,'k');title('Phase Response');

xlabel('frequency in \pi units');

ylabel('\pi units');axis([0,1,-1,1]);

set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1]);

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

figure(3);

plot(w/pi,db,'k');title('Magnitude in dB');

xlabel('frequency in \pi units');

ylabel('decibels');axis([0,1,-40,5]);

set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1]);

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

figure(4);

plot(w/pi,grd,'k');title('Group Delay');

xlabel('frequency in \pi units');

ylabel('Samples');axis([0,1,0,15]);

set(gca,'XTickmode','manual','XTick',[0,0.2,0.3,1]);

set(gca,'YTickmode','manual','YTick',[0:5:15]);grid

结果为:

***Chebyshev-2 Filter Order= 4

图像如下: