基于MATLAB环境的数字滤波器设计.docx
- 文档编号:17201796
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:46
- 大小:442.25KB
基于MATLAB环境的数字滤波器设计.docx
《基于MATLAB环境的数字滤波器设计.docx》由会员分享,可在线阅读,更多相关《基于MATLAB环境的数字滤波器设计.docx(46页珍藏版)》请在冰豆网上搜索。
基于MATLAB环境的数字滤波器设计
引言
随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。
数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测与参数估计等处理,在通信、图像、语音、雷达等许多领域有着十分广泛的应用。
尤其在图像处理、数据压缩等方面取得了令人瞩目的进展和成就[2]。
所以,数字滤波器的设计就显的尤为重要。
在与模拟滤波器相比,数字滤波器是利用离散时间系统的特性对输入信号波形或频率进行加工处理。
或者说,把输入信号变成一定的输出信号,从而达到改变信号频谱的目的。
它具有精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配以及能实现模拟滤波器无法进行的特殊滤波等优点。
目前数字滤波器的设计有很多现成的高级语言设计程序,但它们都存在设计效率低,不具有可视图形,不便于修改等缺点,而MATLAB的FDATOOL工具为数字滤波器的研究和应用提供了一个直观、高效、便捷的利器。
它以矩阵运算为基础,把计算、可视化、仿真设计融合到一个交互式的工作环境中。
MATLAB拥有多样的工具箱,它们为各领域带来了直观方便的应用。
其中,信号处理、图像处理等工具箱为数字滤波研究的蓬勃发展提供了有力的工具。
本文介绍了一种基于MATLAB环境下对数字滤波器进行设计与仿真的方法。
在基于MATLAB环境的数字滤波器的设计过程中,MATLAB工具箱提供了几种模拟滤波器的原型产生函数;模拟低通滤波器原型向低通、高通、带通、带阻的转变函数;从模拟滤波器向数字滤波器转换的双线性变换和冲激响应不变法;数字滤波器直接设计函数等。
这一套设计函数在MATLAB中对于滤波器的设计带来了极大的方便。
在使用时,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。
1数字滤波器及MATLAB语言概述
1.1数字滤波器概述
1.1.1滤波器的发展过程
凡是有能力进行信号处理的装置都可以称为滤波器。
在所有的电子部件中,使用最多,技术最复杂,滤波器的优劣直接决定产品的优劣,所以,对滤波器的研究和生产历来为各国所重视。
1917年美国和德国科学家分别发明了LC滤波器,次年美国第一个多路复用系统出现。
到20世纪50年代,无源滤波器EI日趋成熟。
到60年代中期,形成了数字滤波器的完整而正规的理论。
具体来说,人们提出了各种滤波器结构,有的以运算误差最小为特点,有的则以运算速度高见长,而有的则二者兼而有之。
70年代以后滤波器的主攻方向为低耗能、高精度、小体积、多工艺、稳定可靠并且价廉,这就导致数字滤波器、RC有源滤波器、开关电容滤波器和电荷转移滤波器等各种滤波器的飞速发展。
到了80年代,人们开始致力于各种新型滤波器的研究,如对自适应滤波器的广发研究,所取得的成果在通信、雷达、语音、图像等领域获得了广泛应用。
90年代至今仍致力于把各类滤波器应用在产品的开发和研制上。
当然,对滤波器本身的研究仍在不断进行。
我国广泛使用滤波器是在50年代以后,经过半个世纪的发展,我国在研制、生产和应用等方面已纳入国际发展步伐,现有滤波器的种类和所覆盖的频率也基本上可以满足各种电信产品。
1.1.2滤波器的原理
滤波器,其作用是对输入信号起到滤波的作用。
对于图1-1所示的LSI系统,其时域输入输出关系为:
(1-1)
x(n)y(n)
图1-1
若y(n),x(n)的傅立叶变换存在,则输入输出的频域关系是:
(1-2)
当输入信号x(n)通过滤波器系统h(n)后,其输出y(n)中不再含有|ω|﹥ωc的频率成分,仅使|ω|﹤ωc的信号成分通过。
因此,滤波器的形状不同,其滤波后的信号结果也不一样。
当滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器(DF)。
当用硬件实现一个DF时,所需元件是延迟器、乘法器和加法器;而利用MATLAB软件时,它仅需要线性卷积程序便可实现。
而模拟滤波器(AF)只能用硬件实现。
因此DF比AF容易实现,且更容易获得理想的滤波特性。
数字滤波器具有以下优点:
精度和稳定性高;系统函数容易改变;灵活性高;不存在阻抗匹配;便于大规模集成;可实现多维滤波。
在滤波器中,把信号能够通过的频率范围,称为通频带或通带;反之,信号受到很大衰减或完全被抑制的频率范围称为阻带;通带和阻带之间的分界频率称为截止频率;理想滤波器在通带内的电压增益为常数,在阻带内的电压增益为零;实际滤波器的通带和阻带之间存在一定频率范围的过渡带。
1.2数字滤波器的定义及分类
1.2.1数字滤波器的定义
数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,信号通过线性系统后,其输出就是输入信号和系统冲激响应的卷积。
因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编程程序,让通用计算机来执行。
数字滤波器,输入输出均为数字信号,通过一定的运算关系,改变输入信号中所含频率成分的相对比例,或则滤除某些频率成分的器件。
1.2.2数字滤波器的分类
数字滤波器可以有很多的分类方法,但总体上可以分为两大类。
一类称为经典滤波器,即一般的滤波器,其特点是输入信号中的有用成分和希望滤除的成分占用不同的频带,通过合适的选频滤波器可以实现滤波。
例如,若输入信号中有干扰,信号和干扰的频带互不重叠,则可滤除信号中的干扰得到纯信号。
但是,如果输入信号中信号和干扰的频带相重叠,则干扰就不能被有效的滤除。
另一类称为现代滤波器,如维纳滤波器、卡尔曼滤波器等,其输入信号中有用信号和希望滤除的成分频带重叠。
对于经典滤波器,从频域上也可以分为低通、高通、带通和带阻滤波器。
从时域特性上看,数字滤波器还可以分为有限冲激响应数字滤波器(FIR)和无限冲激响应数字滤波器(IIR)。
对于有限冲激响应数字滤波器(FIR),其输出y(n)只取决于有限个过去和现在的输入,x(n),x(n-1),…,x(n-m),滤波器的输入输出关系可表示为:
(1-3)
对于无限冲激响应数字滤波器(IIR),它的输出不仅取决于过去和现在的输入,而且还取决于过去的输出,其差分方程为:
(1-4)
该差分方程的单位冲激响应是无限延续的。
1.2.3常用滤波器的性能指标
滤波器性能一般用系统频率特性H(ejw)来说明,常用的性能指标主要有以下三个参数:
1.幅度平方函数
(1-5)
该性能指标主要用来说明系统的幅频特性。
2.相位函数
(1-6)
其中:
(1-7)
该指标主要用来说明系统的相位特性。
3.群延时
(1-8)
定义为相位对角频率导致的负值,说明了滤波器对不同的频率成分的平均延时。
当要求在通带内的群延迟是常数时,滤波器相位响应特性是线性的。
实际设计中所能得到的滤波器的频率特性与理想滤波器的频率特性之间存在着一些显著的差别,现以低通滤波器的频率特性为例进行说明。
1.理想低通滤波器的特性:
设滤波器输入信号为x(t),信号中混入噪音u(t),它们有不同的频率成分。
滤波器的单位脉冲响应为h(t)。
则理想滤波器输出为:
(1-9)
即噪音信号被滤除u(t)*h(t)=0.而信号无失真只有延时和线性放大。
对上式作傅立叶变换得:
(1-10)
假定噪音信号被滤除,即:
(1-11)
整理得:
(1-12)
图1-2理想滤波器频率特性图1-3理想滤波器单位脉冲响应
假定信号频率成分为
,噪音频率成分为
。
则完成滤波的理想低通滤波器特性是:
(1-13)
即:
(1-14)
(1-15)
系统的单位脉冲响应为:
(1-16)
理想低通滤波器的频率特性如图1-2所示,单位脉冲响应的波形如图1-3所示。
理想滤波器具有非因果、无限长的单位脉冲响应和不连续的频率特性,要用稳定的线性时不变(LTI)系统来实现这样的特性是不可能的。
工程上是用脉冲响应为有限长的、因果的、稳定的线性时不变系统或具有连续频率特性的线性时不变系统来逼近理想特性。
在满足一定的误差要求的情况下来实现理想滤波特性。
因此实际的滤波器的频率特性如图1-4所示。
图1-4实际滤波器的频率特性
其中:
ωc——截止频率
ωs——阻带起始频率
ωs-ωc——过渡带宽
在通带内幅度响应以±σ₁的误差接近于1,即:
(1-17)
ωs为阻带起始频率,在阻带内幅度响应以小于σ₂的误差接近于零,即:
(1-18)
为了使逼近理想低通滤波器的方法成为可能,还必须提供一带宽为ωs-ωc的不为零的过渡带。
在这个频带内,幅度响应从通带平滑的下落到阻带。
1.3MATLAB软件概述
MATLAB是美国MathWorks公司开发的一种功能极其强大的高技术计算语言和内容极其丰富的软件库,集数值计算、矩阵运算和信号处理与显示于一身。
该软件最初是由美国教授CleveMoler创立的。
1980年前后,他在教线性代数课程时,发现用其他高级语言编程时极不方便,便构思开发了MATLAB,即矩阵实验室(MatrixLaboratory)。
该软件利用了当时代表数值线性代数领域最高水平的EISPACK和LINPACK两大软件包,并且利用Fortran语言编写了最初的一套交互式软件系统,MATLAB的最初版本便由此产生了。
最初的MATLAB由于语言单一,只能进行矩阵的运算,绘图也只能用原始的描点法,内部函数只有几十个,因此功能十分简单。
1984年该公司推出了第一个MATLAB的商业版,并用C语言作出了全部改写。
现在的MATLAB程序是MathWorks公司用C语言开发的,第一版由SteveBangert主持开发翻译解释程序的,SteveKleiman完成图形功能的设计,JohnLittle和CleveMoler主持开发了各类数学分析的子模块、撰写用户指南和大部分的M文件。
接着又添加了丰富的图形图像处理、多媒体功能、符号运算和与其它流行软件的接口功能,使MATLAB的功能越来越强大。
MATLAB系统主要由以下五个部分组成[3]:
(1)MATLAB语言体系。
MATLAB是高层次的矩阵(数组)语言,具有条件控制、函数调用、数据结构、面向对象等程序语言特性。
利用它既可以进行小规模编程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。
(2)MATLAB工作环境。
这是对MATLAB提供给用户使用的管理功能的总称。
包括管理工作空间中的变量数据输入输出的方式和方法,以及开发、调试、管理M文件的各种工具。
(3)图形句相系统。
这是MATLAB图形系统的基础,包括完成2D和3D数据显示、图像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对象进行特性控制的低层MATLAB命令,以及开发GUI(图形用户界面,GraphicUserInterface)应用程序的各种工具。
(4)MATLAB数学函数库。
这是对MATLAB使用的各种数学算法的总称。
包括各种初等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法。
(5)MATLAB应用程序接口(API)。
这是MATLAB为用户提供的一个函数库,使得用户能够在MATLAB环境中使用C程序或FORTRAN程序,包括从MATLAB中调用于程序,读取MAT文件的功能。
除此之外,MATLAB系统还具有如下特点:
a.可以在多种操作系统下运行,如DOS、Windows95/98/2000/NT、CompaqAlpha、LinuxsunSolaris等。
b.有超过500种的数学、统计、科学及工程方面的函数,使用简单快捷,并且有很强的用户自定义函数的能力。
c.有强大的图形绘制和可视化功能,可以进行视觉数据处理和分析,进行图形、图像的显示及编辑,能够绘制二维、三维图形,使用户可以制作高质量的图形,从而写出图文并茂的文章。
d.有和其他高级语言(如C、C++,FORTRAN,JAVA)编写的外部程序相接口的能力,也可以把MATLAB程序转换成上述高级语言的子程序。
e.有从外部文件及外部硬件设备读入数据的能力。
f.有丰富的网络资源,从相关的Web网站可以直接获得全套的MATLAB联机帮助文件和说明书的电子文档,还可以获得各类技术支持与帮助。
g.MATLAB的缺点是,与其他高级程序相比,程序执行的速度较慢。
由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
h.功能强大的工具箱是MATLAB的另一特色。
MATLAB包含两个部分:
核心部分和各种可选的工具箱。
核心部分中有数百个核心内部函数。
其工具箱又分为两类:
功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充MATLAB的符号计算、图形可视化、建模仿真、文字处理等功能以及与硬件实时交互的功能。
功能性工具箱用于多种学科。
学科性工具箱是按学科领域来分类的,如信号处理、控制、通信、神经网络图像处理、系统辨识、模糊逻辑等工具箱。
MATLAB中的信号处理工具箱内容丰富,使用简便。
在数字信号处理中常用的算法,如FFT,卷积,相关,滤波器设计,参数模型等,几乎都只用一条语句即可调用。
数字信号处理中常用的函数有波形的产生、滤波器的分析和设计、傅里叶变换、Z变换等。
MATLAB数字信号处理工具箱和滤波器设计工具箱专门应用于信号处理领域。
工具箱可以使原来繁琐的程序设计简化成函数的调用。
只要以正确的指标参数调用相应的滤波器设计程序或工具箱函数,便可以得到正确的设计结果,使用非常方便。
接下来将分别要对IIR数字滤波器和FIR数字滤波器的设计实现进行分析讨论。
在具体的设计工程中,将充分发挥MATLAB软件在数值计算、图像处理中的优势,并充分利用其强大的滤波器设计工具箱(FDTOOL)及图像用户界面工具辅助设计分析。
2.IIR滤波器设计
2.1数字滤波器设计方法概述
数字滤波器设计的一个重要步骤是确定一个可实现的传递函数H(z),这个确定传递函数H(z)的过程称为数字滤波器的设计。
数字滤波器设计的一般步骤为:
1.按照实际需要,确定滤波器的性能要求(通常在频域内给定数字滤波器的性能要求)。
2.寻找一满足预定性能要求的离散时间线性系统。
3.用有限精度的运算实现所设计的系统。
4.通过模拟,验证所设计的系统是否符合给定性能要求。
2.2IIR滤波器的设计
IIR数字滤波器的冲激响应h(n)是无限长的,其输入输出关系为:
(2-1)
系统函数为:
(2-2)
设计无限长单位脉冲响应(IIR)数字滤波器一般可有三种方法:
第一种方法:
先设计一个合适模拟滤波器,然后将其数字话,即将S平面映射到Z平面得到所需的数字滤波器。
模拟滤波器的设计技巧非常成熟,不仅得到的是闭合形式的公式,而且设计系数已经表格化了。
因此,由模拟滤波器设计数字滤波器的方法准确,简便,得到普遍采用。
对于这种方法,工程上有两种常见的变换法——脉冲响应不变法及双线性变换法。
第二种方法:
在Z平面直接设计IIR数字滤波器,给出闭合形式的公式,或者以所希望的滤波器响应作为依据,直接在Z平面上通过多次选定极点和零点的位置,以逼近该响应。
第三种方法:
利用最优化技术设计参数,选定极点和零点在Z平面上的合适位置,在某种最优化准则意义上逼近所希望的响应。
但一般不能得到滤波器的系数(即零,极点的位置)作为给定响应的闭合形式函数表达式。
优化设计需要完成大量的迭代运算,这种设计法实际上也是IIR滤波器的直接设计法。
利用模拟滤波器成熟的理论设计IIR数字滤波器的过程是:
(1)确定数字滤波器的技术指标:
通带边界频率ωp、通带最大衰减αp、阻带截止频率ωs、阻带最小衰减αs。
(2)将数字滤波器的技术指标转换成相应的模拟滤波器的技术指标
(3)按照模拟滤波器的技术指标设计过渡模拟滤波器。
(4)用所选的转换方法,将模拟滤波器Ha(s)转换成数字滤波器系统函数H(z)
设计流程图如下:
图2-1数字滤波器设计流程图
利用用模拟滤波器设计的方法主要有脉冲响应不变法和双线性变换法。
而本文也重点介绍这两种方法。
2.2.1脉冲响应不变法设计IIR数字滤波器
脉冲响应不变法就是要求数字滤波器的脉冲响应序列
与模拟滤波器的脉冲响应
的采样值相等,即
(2-3)
式中,T为采样周期。
根据模拟信号的拉普拉斯与离散序列的Z变换之间的关系,我们知道
(2-4)
此式表明,
的拉普拉斯变换在S平面上沿虚轴,按照周期Ωs=2π/T延拓后,按式
,进行Z变换,就可以将
映射为
。
事实上,用脉冲响应不变法设计IIR滤波器,只适合于
有单阶极点,且分母多项式的阶次高于分子多项式阶次的情况。
将
用部分分式表示:
(2-5)
式中,LT[]代表拉普拉斯变换,
为单阶极点。
将
进行拉普拉斯反变换,即可得到
(2-6)
式中,u(t)是单位阶跃函数。
则
的离散序列:
(2-7)
对
进行Z变换后,可得到数字滤波器的系统函数
(2-8)
对比
与
我们就会发现:
S域中的
极点是
映射到Z平面之后,其极点变成了eSiT,而系统没有发生变化,仍为Ai。
因此,在设计IIR滤波器时,我们只要找出模拟滤波器系统函数
的极点和系数Ai,通过脉冲响应不变法,代入
的表达式中,即可求出
,实现连续系统的离散化[1]。
但是脉冲响应不变法只适用于设计低通和带通滤波器,而不适用于设计高通和带阻滤波器。
因为,如果模拟信号
的频带不是介于±π/T之间,则会在±π/T的奇数倍附近产生频率混叠现象,映射到Z平面后,则会在ω=π附近产生频率混叠的现象。
从而使所设计的数字滤波器不同程度的偏离模拟滤波器在ω=π附近的频率特性,严重时使数字滤波器不满足给定的技术指标。
为此,希望设计的滤波器是带限滤波器,如果不是带限的,例如,高通滤波器、带阻滤波器,需要在高通滤波器、带阻滤波器之前加保护滤波器,滤出高于折叠频率π/T以上的频带,以免产生频率混叠现象。
但这样会增加系统的成本和复杂性。
因此,高通与带阻滤波器不适合用这种方法。
在MATLAB中,脉冲响应不变法的调用函数是impinvar,其调用格式为:
a.[bz,az]=impinvar(b,a,fs)
b.[bz,az]=impinvar(b,a)
c.[bz,az]=impinvar(b,a,fs,tol)
该函数的功能是将分子向量中为b、分母向量为a的模拟滤波器,转换为分子向量为bz、分母向量为az的数字滤波器。
fs为采样频率,单位为Hz,默认值为1Hz。
tol指误差容限,表示转换后的离散系统函数是否有重复的极点。
例如,设计一个滤波器除指定正弦信号中的噪声,还原正弦信号。
该正弦信号为sin(2*pi*100*t),噪声信号是sin(2*pi*50*t)和sin(2*pi*150*t)。
信号采样频率为2KHz。
滤波器的性能指标:
巴特沃斯IIR带通滤波器;fs=2000Hz,wp1=90Hz,wp2=110Hz,ws1=80Hz,ws2=120Hz,rp=1,rs=20。
程序如下所示:
>>clear
>>wp1=90;
>>wp2=110;
>>ws1=80;
>>ws2=120;
>>fs=2000;
>>rp=1;
>>rs=20;
>>wp=[wp1,wp2]*2*pi;
>>ws=[ws1,ws2]*2*pi;
>>bw=wp2*2*pi-wp1*2*pi;
>>wo=2*pi*sqrt(wp2*wp1);
>>[n,wn]=buttord(wp,ws,rp,rs,'s');%估计滤波器阶数
>>[z,p,k]=buttap(n);%产生模拟低通滤波器原型
>>[b,a]=zp2tf(z,p,k);%转化为转换函数形式
>>[Bb,Ab]=lp2bp(b,a,wo,bw);%转化为带通滤波器
>>[Bbz,Abz]=impinvar(Bb,Ab,fs);%调用脉冲响应不变法
>>[h,w]=freqz(Bbz,Abz,512);%计算频率响应
>>subplot(2,3,1);%创建子图
>>plot((w/pi)*fs/2,20*log10(abs(h)));%平面线图
>>grid;%画分格线
>>xlabel('w/pi');%定义x轴
>>ylabel('数字带通幅度(dB)');%定义y轴
>>t1=0:
1/2000:
0.5;
>>A=0.5*sin(2*pi*50*t1);
>>B=sin(2*pi*100*t1);
>>C=2*sin(2*pi*150*t1);
>>subplot(2,3,2);
>>plot(t1,A);
>>subplot(2,3,3);
>>plot(t1,B);
>>subplot(2,3,4);
>>plot(t1,C);
>>D=A+B+C;
>>subplot(2,3,5);
>>plot(t1,D);
>>E=filter(Bbz,Abz,D);%生成滤波器函数
>>subplot(2,3,6);
>>plot(t1,E);
图2-2滤波器响应曲线图
2.2.2双线性变换法设计IIR数字滤波器
从S平面到Z平面是多值的映射关系会造成频率响应的混叠失真。
为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到﹣π/T~π/T之间,再用
转换到Z平面上。
也就是说,第一步先将整个S平面压缩到S1平面的﹣π/T~π/T一条横带里;第二步再通过标准变换关系
将此横带变换到整个Z平面上去。
这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频率混叠现象,映射关系如下图所示。
S平面S1平面Z平面
图2-3双线性变换映射关系图
为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的﹣π/T~π/T段上,可以通过以下正切变换实现
(2-9)
式中,T仍为采样间隔。
当Ω1由﹣π/T经过0变化到π/T时,Ω由﹣∞经过0变化到﹢∞,也即映射了整个jΩ轴。
将式(2-9)写成
(2-10)
将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得:
(2-11)
再将S1平面通过以下标准变换关系映射到Z平面Z=eS1T从而得到S平面和Z平面的单值映射关系:
(2-12)
(2-13)
式子(2-12)与式子(2-13)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换。
式子(2-9)与式子(2-12)的双线性变换符合映射变换应满足的两点要求:
首先,把z=ejω,可得
(2-14)
即S平面的虚轴映射到Z平面的单位圆。
其次,将s=
+jΩ代入(2-13)得
(2-15)
因此
(2-16)
由此看出,当
<0时,|z|<1;当
>0时,|z|>1.也就是说,S平面的左半平面映射到Z平面的单位圆内,S平面的右半平面映射到Z平面的单位圆外,S平面的虚轴映射到Z平面的单位圆上。
因此,稳定的模拟滤波器经双线性变换后所得的数字滤波器也一定是稳定的。
双线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 环境 数字滤波器 设计