基于MATLAB的IIR数字滤波器的设计课程设计说明书.docx
《基于MATLAB的IIR数字滤波器的设计课程设计说明书.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的IIR数字滤波器的设计课程设计说明书.docx(51页珍藏版)》请在冰豆网上搜索。
基于MATLAB的IIR数字滤波器的设计课程设计说明书
课程设计说明书
题目:
基于MATLAB的IIR数字滤波器的设计
姓名:
院(系):
专业班级:
学号:
指导教师:
成绩:
时间:
年月日至年月日
课程设计任务书
题目基于MATLAB的IIR数字滤波器的设计
专业、班级学号姓名
主要内容、基本要求、主要参考资料等:
主要内容:
利用四种模拟原型滤波器(巴特沃斯、切比雪夫I型、切比雪夫II型、椭圆型)和两种模/数转换方法(脉冲响应不变法、双线性变换法)分别进行IIR数字滤波器的设计。
基本要求:
根据给定的各类滤波器的技术指标,分别设计实现数字高通滤波器、数字带通滤波器和数字带阻滤波器,并据此进行分析总结:
1、在相同的技术指标要求下,用不同的模拟原型滤波器实现有何异同。
2、在相同的技术指标要求下,用不同的模/数转换方法实现有何异同。
主要参考资料:
1、《数字信号处理教程(第三版)》,程佩青著,清华大学出版社,2007。
2、《数字信号处理教程——MATLAB释义与实现(第2版)》,陈怀琛著,电子工业出版社,2008。
完成期限:
指导教师签名:
课程负责人签名:
年月日
基于MATLAB的IIR数字滤波器的设计
摘要
利用MATLAB设计滤波器,可以按照设计要求非常方便地调整设计参数,极大地减轻了设计的工作量,有利于滤波器设计的最优化。
Matlab因其强大的数据处理功能被广泛应用于工程计算,其丰富的工具箱为工程计算提供了便利,利用Matlab信号处理工具箱可以快速有效地设计各种数字滤波器,设计简单方便。
本文介绍了在MATLABR2009a环境下滤波器设计的方法和步骤。
关键词MATLABIIR数字滤波器模拟滤波器
1数字滤波器
1.1数字滤波器的概念
滤波器是指用来对输入信号进行滤波的硬件和软件。
数字滤波器是对数字信号实现滤波的线性时不变系统。
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波实质上是一种运算过程,实现对信号的运算处理。
数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方法不同,数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配等优点。
输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。
描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。
时域离散系统的频域特性:
(式1-1)
其中
、
分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),
是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响应。
输入序列的频谱
经过滤波后
因此,只要按照输入信号频谱的特点和处理信号的目的,适当选择
,使得滤波后的
满足设计的要求,这就是数字滤波器的滤波原理。
1.2数字滤波器的分类
按照不同的分类方法,数字滤波器有许多种类,但总起来可以分成两大类:
经典滤波器和现代滤波器。
经典滤波器的特点是其输入信号中有用的频率成分和希望滤除的频率成分占有不同的频带,通过一个合适的选频滤波器滤除干扰,得到纯净信号,达到滤波的目的。
但是,如果信号和干扰的频谱相互重叠,则经典滤波器不能有效地滤除干扰,最大限度地恢复信号,这时就需要现代滤波器,例如维纳滤波器、卡尔曼滤波器、自适应滤波器等最佳滤波器。
现代滤波器是根据随机信号的一些统计特性,在某种最佳准则下,最大限度地抑制干扰,同时最大限度地回复信号,从而达到最佳滤波的目的。
经典数字滤波器从滤波特性上分类,可以分为:
低通滤波器、高通滤波器、带通滤波器、带阻滤波器。
图1-1各种理想滤波器的幅频特性
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。
IIR数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型来实现,
其差分方程为:
(式1-2)
系统函数为:
(式1-3)
设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。
1.3数字滤波器的设计要求
滤波器的指标常常在频域给出。
数字滤波器的频响特性函数
一般为复函数,所以通常表示为:
(1-4)
其中,|
|称为幅频特性函数,Φ(w)称为相频特性函数。
幅频特性表示信号通过该滤波器后各频率成分的衰减情况,而相频特性反映各频率通过滤波器后在时间上的延时情况。
一般IIR数字滤波器,通常只用幅频响应函数|
|来描述设计指标,相频特性一般不作要求。
IIR滤波器指标参数如下图所示。
图中,ωp和ωs分别为通带边界频率和阻带边界频率;δ1和δ2分别为通带波纹和阻带波纹;允许的衰减一般用dB数表示,通带内所允许的最大衰减(dB)和阻带内允许的最小衰减(dB)分别为αp和αs表示:
(式1-5)
(式1-6)
一般要求:
当
时,
;
当
时,
。
图1-2低通滤波器的技术要求
2IIR数字滤波器的设计
2.1IIR数字滤波器的设计步骤
IIR数字滤波器的设计一般有两种方法:
一个是借助模拟滤波器的设计方法进行。
其设计步骤是,先设计模拟滤波器,再按照某种方法转换成数字滤波器。
这种方法比较容易一些,因为模拟滤波器的设计方法已经非常成熟,不仅有完整的设计公式,还有完善的图表供查阅;另外一种直接在频率或者时域内进行,由于需要解联立方程,设计时需要计算机做辅助设计。
其设计步骤是:
先设计过渡模拟滤波器得到系统函数
,然后将
按某种方法转换成数字滤波器的系统函数
。
这是因为模拟滤波器的设计方法已经很成熟,不仅有完整设计公式,还有完善的图表和曲线供查阅;另外,还有一些典型的优良滤波器类型可供我们使用。
为了保证转换后的
稳定且满足技术指标要求,对转换关系提出两点要求:
因果稳定的模拟滤波器转换成数字滤波器,仍是因果稳定的。
数字滤波器的频率相应模仿模拟滤波器的频响特性,s平面的虚轴映射为z平面的单位圆,相应的频率之间呈线性关系。
利用模拟滤波器成熟的理论设计IIR数字滤波器的过程是:
(1)确定数字低通滤波器的技术指标:
通带边界频率
、通带最大衰减
、阻带截止频率
、阻带最小衰减
。
(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。
(3)按照模拟低通滤波器的技术指标设计过渡模拟低通滤波器。
(4)用所选的转换方法,将模拟滤波器
转换成数字低通滤波器系统函数
。
IIR数字滤波器的设计流程图如下:
图2-1IIR数字滤波器的设计步骤流程图
成熟的模拟滤波器设计方法主要有脉冲响应不变法和双线性变换法。
2.2用脉冲响应不变法设计IIR数字滤波器
一、设计原理
利用模拟滤波器来设计数字滤波器,也就是使数字滤波器能模仿模拟滤波器的特性,这种模仿可以从不同的角度出发。
脉冲响应不变法是从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响
应序列h(n)模仿模拟滤波器的冲激响应ha(t),即将ha(t)进行等间隔采样,使h(n)正好等于ha(t)的采样值,满足h(n)=ha(nT)式中,T是采样周期。
如果令Ha(s)是ha(t)的拉普拉斯变换,H(z)为h(n)的Z变换,利用采样序列的Z变换与模拟信号的拉普拉斯变换的关系得
(式2-1)
则可看出,脉冲响应不变法将模拟滤波器的S平面变换成数字滤波器的Z平面,
图2-2脉冲响应不变法的映射关系
这个从s到z的变换z=esT是从S平面变换到Z平面的标准变换关系式。
由(2-1)式,数字滤波器的频率响应和模拟滤波器的频率响应间的关系为
(式2-2)
这就是说,数字滤波器的频率响应是模拟滤波器频率响应的周期延拓。
正如采样定理所讨论的,只有当模拟滤波器的频率响应是限带的,且带限于折叠频率以内时,即
(式2-3)
才能使数字滤波器的频率响应在折叠频率以内重现模拟滤波器的频率响应,而不产生混叠失真,即
(式2-4)
但是,任何一个实际的模拟滤波器频率响应都不是严格限带的,变换后就会产生周期延拓分量的频谱交叠,即产生频率响应的混叠失真。
这时数字滤波器的频响就不同于原模拟滤波器的频响,而带有一定的失真。
当模拟滤波器的频率响应在折叠频率以上处衰减越大、越快时,变换后频率响应混叠失真就越小。
这时,采用脉冲响应不变法设计的数字滤波器才能得到良好的效果。
图2-3脉冲响应不变法中的频响混叠现象
对某一模拟滤波器的单位冲激响应ha(t)进行采样,采样频率为fs,若使fs增加,即令采样时间间隔(T=1/fs)减小,则系统频率响应各周期延拓分量之间相距更远,因而可减小频率响应的混叠效应。
二、脉冲响应不变法优缺点
从以上讨论可以看出,脉冲响应不变法使得数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,也就是时域逼近良好,而且模拟频率Ω和数字频率ω之间呈线性关系ω=ΩT。
因而,一个线性相位的模拟滤波器(例如贝塞尔滤波器)通过脉冲响应不变法得到的仍然是一个线性相位的数字滤波器。
脉冲响应不变法的最大缺点是有频率响应的混叠效应。
所以,脉冲响应不变法只适用于限带的模拟滤波器(例如,衰减特性很好的低通或带通滤波器),而且高频衰减越快,混叠效应越小。
至于高通和带阻滤波器,由于它们在高频部分不衰减,因此将完全混淆在低频响应中。
如果要对高通和带阻滤波器采用脉冲响应不变法,就必须先对高通和带阻滤波器加一保护滤波器,滤掉高于折叠频率以上的频率,然后再使用脉冲响应不变法转换为数字滤波器。
当然这样会进一步增加设计复杂性和滤波器的阶数。
2.3双线性变换法设计IIR数字滤波器
脉冲响应不变法的主要缺点是产生频率响应的混叠失真。
这是因为从S平面到Z平面是多值的映射关系所造成的。
为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。
也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。
这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图2-4所示。
图2-4双线性变换的映射关系
为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现
(式2-5)
式中,T仍是采样间隔。
当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴。
将式(2-5)写成
(式2-6)
将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得
(式2-7)
再将S1平面通过以下标准变换关系映射到Z平面
(式2-8)
从而得到S平面和Z平面的单值映射关系为:
(式2-9)
(式2-10)
式(2-9)与式(2-10)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换
式(2-5)与式(2-9)的双线性变换符合映射变换应满足的两点要求。
首先,把z=ejω,可得
(式2-11)
即S平面的虚轴映射到Z平面的单位圆。
其次,将s=σ+jΩ代入式(2-11),得
(式2-12)
因此
(式2-13)
由此看出,当σ<0时,|z|<1;当σ>0时,|z|>1。
也就是说,S平面的左半平面映射到Z平面的单位圆内,S平面的右半平面映射到Z平面的单位圆外,S平面的虚轴映射到Z平面的单位圆上。
二、双线性变换法优缺点
双线性变换法与脉冲响应不变法相比,其主要的优点是避免了频率响应的混叠现象。
这是因为S平面与Z平面是单值的一一对应关系。
S平面整个jΩ轴单值地对应于Z平面单位圆一周,即频率轴是单值变换关系。
这个关系如式(2-9)所示,重写如下:
(式2-14)
上式表明,S平面上Ω与Z平面的ω成非线性的正切关系,如图2-4所示。
由图2-4看出,在零频率附近,模拟角频率Ω与数字频率ω之间的变换关系接近于线性关系;但当Ω进一步增加时,ω增长得越来越慢,最后当Ω→∞时,ω终止在折叠频率ω=π处,因而双线性变换就不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,从而消除了频率混叠现象。
图2-5双线性变换法的频率变换关系
但是双线性变换的这个特点是靠频率的严重非线性关系而得到的,如式(2-12)及图2-4所示。
由于这种频率之间的非线性变换关系,就产生了新的问题。
首先,一个线性相位的模拟滤波器经双线性变换后得到非线性相位的数字滤波器,不再保持原有的线性相位了;其次,这种非线性关系要求模拟滤波器的幅频响应必须是分段常数型的,即某一频率段的幅频响应近似等于某一常数(这正是一般典型的低通、高通、带通、带阻型滤波器的响应特性),不然变换所产生的数字滤波器幅频响应相对于原模拟滤波器的幅频响应会有畸变,如图2-5所示。
图2-6双线性变换法幅度和相位特性的非线性映射
对于分段常数的滤波器,双线性变换后,仍得到幅频特性为分段常数的滤波器,但是各个分段边缘的临界频率点产生了畸变,这种频率的畸变,可以通过频率的预畸变来加以校正。
也就是将临界模拟频率事先加以畸变,然后经变换后正好映射到所需要的数字频率上。
3IIR滤波器的MATLAB设计
用MATLAB进行模拟原型的数字滤波器的设计,一般步骤如下:
(1)按一定规则将给出的数字滤波器的技术指标转换成模拟低通滤波器的技术指标;
(2)根据转换后的技术指标使用滤波器阶数选择函数,确定最小阶数N和固有频率Wn,根据选用的模拟低通滤波器的类型可分别用:
buttord,cheblord,cheb2ord,ellipord等函数;
(3)运用最小阶数N产生模拟滤波器原型,模拟低通滤波器的创建函数有:
buttap,cheblap,cheb2ap,ellipap,besselap等;
(4)运用固有频率Wn把模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器,可分别用函数lp2lp,lp2hp,lp2bp,lp2bs;
(5)运用冲激响应不变法或双线性变换法把模拟滤波器转换成数字滤波器,分别用函数impinva和bilinear来实现。
低通Chebyshevl型数字滤波器的设计:
设计中需要限定其通带上限临界频率Wp,阻带临界滤波频率Ws,在通带内的最大衰减Rp,阻带内的最小衰减Rs。
其步骤如图3-1所示。
图3-1数字滤波器设计步骤
3.1巴特沃斯数字滤波器的设计
(4.1)
式中,N为正整数,称为滤波器的阶数。
N值越大,通带和阻带的近似特性就越好。
在截止频率
处,幅度平方响应为
=0处的1/2,相当于幅度响应的3dB衰减点。
其系统函数为
(4.2)
式中,
为归一化常数,一般
;
为s平面左半平面的极点。
低通巴特沃斯滤波器设计步骤如下:
(1)确定阶数N。
取N=4
(2)求极点
,
,
,
,
归一化低通原型系统函数为
由N=4直接查表得到:
极点:
归一化低通滤波器系统函数为
式中,
0.0000,
0.0999,
0.1914,
0.0252
(3)将
去归一化最终得到
通过计算可以总结出过程太麻烦,而且容易出错,结果不直观。
3.1.1数字高通滤波器的设计
,
,通带最大衰减为1dB,阻带最小衰减为100dB。
用脉冲响应不变法设计巴特沃斯高通滤波器,
程序如下:
Wp=0.6*pi/T;
Ws=0.4*pi/T;%设置归一化通带和阻带截止频率
T=1;%设置采样周期为1
fs=1/T;%采样频率为周期倒数
Ap=1;
As=100;%设置通带最大和最小衰减
[N,Wn]=buttord(Wp,Ws,Ap,As,'s');%调用butter函数确定巴特沃斯滤波器阶数
[B,A]=butter(N,Wn,'high','s');%调用butter函数设计巴特沃斯滤波器
W=linspace(0,pi,1000*pi);%指定一段频率值
hf=freqs(B,A,W);%计算模拟滤波器的幅频响应
[D,C]=impinvar(B,A,fs);%调用脉冲响应不变法
Hz=freqz(D,C,W);%返回频率响应
plot(W/pi,abs(Hz));%绘出巴特沃斯数字高通滤波器的幅频特性曲线
gridon;
xlabel('Frequency/Hz');
ylabel('Magnitude');
图3-2脉冲响应不变法设计的巴特沃斯高通滤波器运行波形
用双线性变换法设计巴特沃斯高通滤波器,
程序如下:
Wp=0.6*pi/T;
Ws=0.4*pi/T;%设置归一化通带和阻带截止频率
T=1;%设置采样周期为1
fs=1/T;%采样频率为周期倒数
Ap=1;
As=100;%设置通带最大和最小衰减
[N,Wn]=buttord(Wp,Ws,Ap,As,'s');%调用butter函数确定巴特沃斯滤波器阶数
[B,A]=butter(N,Wn,'high','s');%调用butter函数设计巴特沃斯滤波器
W=linspace(0,pi,400*pi);%指定一段频率值
hf=freqs(B,A,W);%计算模拟滤波器的幅频响应
[D,C]=bilinear(B,A,fs);%调用双线性变换法
Hz=freqz(D,C,W);%返回频率响应
plot(W/pi,abs(Hz));%绘出巴特沃斯数字高通滤波器的幅频特性曲线
gridon;
xlabel('Frequency');
ylabel('Magnitude');
图3-3双线性变换法设计的巴特沃斯高通滤波器运行波形
3.1.2数字带通滤波器的设计
,
,
,
,通带最大衰减为1dB,阻带最小衰减为100dB。
用脉冲响应不变法设计巴特沃斯带通滤波器,
程序如下:
Wp1=0.6*pi/T;
Wp2=0.7*pi/T;
Ws1=0.3*pi/T;
Ws2=0.8*pi/T;%设置归一化通带和阻带截止频率
T=1;%设置采样周期为1
fs=1/T;%采样频率为周期倒数
Ap=1;
As=100;%设置通带最大和最小衰减
Wp=[Wp1,Wp2];
Ws=[Ws1,Ws2];
[N,Wn]=buttord(Wp,Ws,Ap,As,'s');%调用butter函数确定巴特沃斯滤波器阶数
[B,A]=butter(N,Wn,'bandpass','s');%调用butter函数设计巴特沃斯滤波器
W=linspace(0,pi,1000*pi);%指定一段频率值
hf=freqs(B,A,W);%计算模拟滤波器的幅频响应
[D,C]=impinvar(B,A,fs);%调用脉冲响应不变法
Hz=freqz(D,C,W);%返回频率响应
plot(W/pi,abs(Hz));%绘出巴特沃斯数字带通滤波器的幅频特性曲线
gridon;
xlabel('Frequency');
ylabel('Magnitude');
图3-4脉冲响应不变法设计的巴特沃斯带通滤波器运行波形
用双线性变换法设计巴特沃斯带通滤波器,
程序如下:
Wp1=0.6*pi/T;
Wp2=0.7*pi/T;
Ws1=0.3*pi/T;
Ws2=0.8*pi/T;%设置归一化通带和阻带截止频率
T=1;%设置采样周期为1
fs=1/T;%采样频率为周期倒数
Ap=1;
As=100;%设置通带最大和最小衰减
Wp=[Wp1,Wp2];
Ws=[Ws1,Ws2];
[N,Wn]=buttord(Wp,Ws,Ap,As,'s');%调用butter函数确定巴特沃斯滤波器阶数
[B,A]=butter(N,Wn,'bandpass','s');%调用butter函数设计巴特沃斯滤波器
W=linspace(0,pi,1000*pi);%指定一段频率值
hf=freqs(B,A,W);%计算模拟滤波器的幅频响应
[D,C]=bilinear(B,A,fs);%调用双线性转换法
Hz=freqz(D,C,W);%返回频率响应
plot(W/pi,abs(Hz));%绘出巴特沃斯数字带通滤波器的幅频特性曲线
gridon;
xlabel('Frequency');
ylabel('Magnitude');
图3-5双线性变换法设计的巴特沃斯带通滤波器运行波形
3.1.3数字带阻滤波器的设计
,
,
,
,通带最大衰减为1dB,阻带最小衰减为100dB。
用脉冲响应不变法设计巴特沃斯带阻滤波器,
程序如下:
Wp1=0.2*pi/T;
Wp2=0.8*pi/T;
Ws1=0.3*pi/T;
Ws2=0.7*pi/T;%设置归一化通带和阻带截止频率
T=1;%设置采样周期为1
fs=1/T;%采样频率为周期倒数
Ap=1;
As=100;%设置通带最大和最小衰减
Wp=[Wp1,Wp2];
Ws=[Ws1,Ws2];
[N,Wn]=buttord(Wp,Ws,Ap,As,'s');%调用butter函数确定巴特沃斯滤波器阶数
[B,A]=butter(N,Wn,'stop','s');%调用butter函数设计巴特沃斯滤波器
W=linspace(0,pi,1000*pi);%指定一段频率值
hf=freqs(B,A,W);%计算模拟滤波器的幅频响应
[D,C]=impinvar(B,A,fs);%调用脉冲响应不变法
Hz=freqz(D,C,W);%返回频率响应
plot(W/pi,abs(Hz));%绘出巴特沃斯数字带阻滤波器的幅频特性曲线
gridon;
xlabel('Frequency');
ylabel('Magnitude');
图3-6脉冲响应不变法设计的巴特沃斯带阻滤波器运行波形
用双线性变换法设计巴特沃斯带阻滤波器,
程序如下:
Wp1=0.2*pi/T;
Wp2=0.8*pi/T;
Ws1=0.3*pi/T;
Ws2=0.7*pi/T;%设置归一化通带和阻带截止频率
T=1;%设置采样周期为1
fs=1/T;%采样频率为周期倒数
Ap=1;
As=100;%设置通带最大和最小衰减
Wp=[Wp1,Wp2];
Ws=[Ws1,Ws2];
[N,Wn]=buttord(Wp,Ws,Ap,As,'s');%调用butter函数确定巴特沃斯滤波器阶数
[B,A