滤波器设计与信号处理的matlab实现(2014年12月)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

滤波器设计与信号处理的MATLAB 实现

庞 勇 2014年12月

1. IIR 滤波器设计和MATLAB 实现

1.1 IIR 滤波器设计原理

对于IIR 滤波器设计,我们主要学习的是由模拟滤波器设计数字滤波器的方法,设计思路和流程如图:

目的满足

先设计

基于第3步由模拟滤波器向数字滤波器的转化方式,IIR 滤波器设计方法分为“脉冲响应不变法”和“双线性变换法”,由于“脉冲响应不变法”存在混叠误差的缺陷,因此一般我们多选“双线性变换法”,而对于第2步模拟滤波器的设计,我们主要学习的是巴特沃斯设计方法,因此这里以“巴特沃斯滤波器双线性变换”设计法为例来阐述IIR 滤波器的设计方法和matlab 实现。

“巴特沃斯滤波器双线性变换”设计法的设计流程:

终始DF 指标

DF

()

c H s ()

d H z 11

211z s T z ---=

+

原理解释:

δ1δ-1+δ

222p

T

tg 1-1+2

s T

2

2tg ()

c H j Ω2p

T ω

Ω

2

δ1

1δ-1

1+δ2

s T

ω(d p ωs

ω0

δ1δ-1

1+π

其中巴特沃斯模拟滤波器设计流程为:

1+2

δ1δ-δH 得两点代入()j ΩN

Ωj A 点代入

()H Ω得c H(s)H(-s)极点分布:共2N 个共圆c

Ω等角距N π

1.2 “巴特沃斯滤波器双线性变换”设计法的matlab 实现:

按照设计原理和流程,每一步都可以在matlab 里进行编程计算,因此完全可以编程实现从技术指标到系统函数的整个计算,并且matlab 的信号处理工具箱已经把这整个计算过程编成函数供人们直接调用,我们只要了解这个函数的使用方法就可以了。

下面两个函数的联用就由技术指标计算出系统函数:

[N,Wn]=buttord(wp,ws,rp,rs); [b,a]=butter(N,Wn);

函数“buttord ”由技术指标计算出巴特沃斯滤波器的阶数和3dB 截止频率。其中“wp,ws,rp,rs ” 分别表示通带截止频率,阻带截止频率,通带衰减和阻带衰减;“N,Wn ” 分别表示巴特沃斯滤波器阶数和3dB 截止频率。

注意:wp,ws 要求用归一化频率,即把0-pi ,归为0-1;rp,rs 用dB 数表示;Wn 指的是,模拟巴特沃斯滤波器经双线性变换成数字滤波器时的3dB 截止频率,且是归一化表示。

函数“butter ”由巴特沃斯滤波器阶数和3dB 截止频率计算出系统函数。其中“b,a ”表示系统函数的系数序列。我们知道数字滤波器系统函数一般形式

为: ()1201212012M

M N

N b b z b z b z H z a a z a z a z ------++++=++++,“b,a ”就分别是系数序列

[]0

12

M b b b b 和[]0

12

N a a a a 。

例:设计一个满足以下技术指标的数字滤波器:

0.1

0.9

通阻带截止频率分别为0.3π和0.7π,归一化表示就是:0.3p ω=和0.7s ω=。通阻带衰减的dB 表示分别为()1

20lg 0.9151dB 0.9

p r ==和()120lg 20dB 0.1s r == 编程:

wp=0.3;ws=0.7;rp=0.9151;rs=20; [N,Wn]=buttord(wp,ws,rp,rs); [b,a]=butter(N,Wn);

返回:

b = 0.1447 0.4342 0.4342 0.1447 a = 1.0000 -0.1677 0.3408 -0.0153 于是设计出数字滤波器:

()123

123

0.14470.43420.43420.144710.16770.34080.0153z z z H z z z z ------+++=-+-

上述设计原理和方法是以低通滤波器为例来说明,如果要设计高通、带通、带阻等其它类型滤波器,只需要由低通滤波器进行转换而来,下面进行详细介绍。

1.3IIR各类滤波器设计原理和MATLAB实现

IIR各类数字滤波器设计原理如图所示:

在matlab里,整个设计计算过程由同样两个函数的联用来实现:

[N,Wn]=buttord(wp,ws,rp,rs);

[b,a]=butter(N,Wn,‘*’);

其中“wp,ws,rp,rs”可以表示各类数字滤波器技术指标:

对于低通就有wpws ;

对于带通就有wp=[wp1, wp2],ws=[ws1, ws2],且ws1

对于带阻就有wp=[wp1, wp2],ws=[ws1, ws2],且wp1

函数“butter”可以设计各类滤波器:

[b,a]=butter(N,Wn),若Wn为一数值,则设计低通滤波器;

若Wn为一向量wn=[wn1, wn2],则设计带通滤波器;

[b,a]=butter(N,Wn,‘high’),且wn为一数值,设计高通滤波器;

[b,a]=butter(N,Wn,‘stop’),且wn=[wn1, wn2],设计带阻滤波器。

相关文档
最新文档