MATLAB设计IIR数字滤波器Word下载.docx
- 文档编号:17516902
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:42
- 大小:1.20MB
MATLAB设计IIR数字滤波器Word下载.docx
《MATLAB设计IIR数字滤波器Word下载.docx》由会员分享,可在线阅读,更多相关《MATLAB设计IIR数字滤波器Word下载.docx(42页珍藏版)》请在冰豆网上搜索。
数字信号处理在通信、语音、图像,自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
在数字信号处理中,数字滤波器占有极其重要的地位。
现代数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现,用软件来实现数字滤波器优点是随着滤波器参数的改变,很容易改变滤波器的性能。
根据数字滤波器单脉冲响应的时域特性可将数字滤波器分为两种,即IIR(InfiniteImpulseResponse)无限长脉冲响应数字滤波器和FIR(FiniteImpulseResponse)有限长脉冲响应数字滤波器。
从功能上分类,可分为低通、高通、带通、带阻滤波器。
3.2IIR数字滤波器
3.2.1IIR数字滤波器设计原理
滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。
IIR滤波器一般采用递归型的结构,系统的输入与输出服从N阶差分方程:
相应的传输函数为:
设计IIR数字滤波器就是要确定传输函数中的系数
、
或零极点增益
、A,使滤波器的频率特性满足给定的性能指标要求。
设计原理主要包括两个方面:
一是根据设计指标,先设计出相应的模拟滤波器再通过脉冲响应不变法或双线性变换法转换成对应的数字滤波器;
二是选择一种优准则,如最小均方准则,再在
,先最误差此准则下求出滤波器传输函数的系数。
根据设计理论,在MATLAB环境下设计IIR数字滤波器主要有四种方法:
一是典型设计法;
二是完全设计法;
三是最优设计法;
四是工具设计法。
由于完全设计法程序简单,我们在这里利用完全设计法设计滤波器。
2、所谓数字滤波器,是指输入,输出均为数字信号,通过一定运算关系改变输入信号所含
频率成分的相对比例或者滤除某些频率成分的硬件。
实质上就是一个由有限精度算法实现的线性时不变离散系统。
它的基本工作原理是利用离散系统的特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用的频率分量通过,抑制无用的信号分量输出,根据其频率特性同样可以分为低通,高通,带通,带阻。
如果要处理的信号是模拟信号,就可以通过A/D或者D/A转换,在信号形式上进行匹配转换,同样可以使用数字滤波器对模拟信号进行滤波[1]。
数字滤波器滤波的数学表达式:
(1-1)
如果滤波器的输入输出信号都是离散信号,那么该滤波器的脉冲响应也一定是离散信
号,这样的滤波器就成为了数字滤波器。
其频域特性为:
(1-2)
其中
分别是数字滤波器的输出序列和输入序列的频域响应,
是数字滤波器的频域响应。
可以看见按照输入信号的频谱特点和处理信号的目的适当选择滤波
器的频域响应
,使得滤波后的输出信号满足设计性能要求,就是滤波器的滤波原理。
1.1IIR数字滤波器传输特性
IIR数字滤波器的系统函数可以表示为:
(1-3)
式中H(Z)称为N阶IIR滤波器函数,它是一种递归型的滤波器。
1.2数字滤波器的技术要求
我们通常设计的数字滤波器一般属于选频滤波器,我们的目的是要设计一个因果可实现
的滤波器,另外买也要考虑到成本和复杂性问题,因此实用中通带和阻带都允许一定的误差
容限,即通带不一定是完全水平的,阻带也不可能完全衰减到零[2]。
而且,通带和阻带之间
还要设置一定带宽的过渡带。
如下图表示低通滤波器的技术要求:
图1.2.1低通滤波器特性
Figure1.2.1lowpassfilter'
scharacteristic
图中,
分别表示通带截止频率和阻带截止频率,通带频率范围为0≤w≤pw,
通带中要求
,阻带截止频率范围
,再阻带中要求
,从
到
称为过渡带,在这个频带内,幅度响应从通带平滑的下落到阻带。
2MATLAB简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。
一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。
目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
本文将利用其中的信号处理工具箱来设计IIR数字滤波器。
3IIR数字滤波器的几种设计方法
3.1程序设计法
IIR数字滤波器设计的一般方法是先设计低通模拟滤波器,进行频率变换,将其转换为相应的(高通,带通等)模拟滤波器,在转换为高通,带通或带阻数字滤波器,由模拟滤波器设计数字滤波器的方法。
这是因为模拟滤波器设计方法已经很成熟,它不仅有完整的设计公式,还有完善的图表供查阅,另外,还有一些典型的滤波器类型可供我们使用。
对设计的全过程的各个步骤,MATLAB都提供了了相应的工具箱函数,使IIR数字滤波器设计变得非常简单。
3.1.1设计方法
程序设计法[3]是基于MATLAB中相应的工具箱函数来实现的,IIR数字滤波器的设计步骤可由图3.1.1所示的流程图来表示。
这个图也清晰的表示了5类20个信号处理工具箱函数的作用,
图3.1.1滤波器设计流程
Figure3.1.1flowoffilter’sdesign
在MATLAB中,模拟滤波器的系统函数:
(3-1)
数字滤波器的系统函数:
(3-2)
在实际工程中,需要的设计结果是系数向量B和A,用B和A来综合滤波器的硬件实现结构或软件运算结构,为了直观的看出设计结果,本文的实例均以滤波器幅频响应曲线作为设计结果输出。
如果需要滤波器系数,在运行程序后,只要在MATLAB命令窗口键入系数向量名,则相应的系数就显示出来了。
3.1.2程序设计及分析
1)设计高通和带通BUTTERWORTH数字滤波器
我们给出四阶归一化BUTTERWOTH模拟滤波器的系统函数
(3-3)
用双线性变换法从Ha(s)设计四阶带通BUTTERWOTH数字滤波器
并图示
设计采样周期T=1s,指标:
本例主要涉及三个问题:
①由数字滤波器指标求相应的模拟滤波器指标;
②模拟滤波器频率变换(因为已给定阶数和模拟滤波器的归一化低通原型);
③由相应的模拟滤波器到数字滤波器(双线性变换法)。
由于调用bilinear函数将模拟滤波器转换成数字滤波器[4]
非常容易,并且有效抑制频率失真的问题,本例给定了数字滤波器指标,所以首先要设计处与该指标相应的四阶BUTTERWORTH模拟滤波器,然后调用bilinear函数将其转换为数字滤波器即可,应当特别注意的是,对于双线性变换法,由数字边界频率求相应的模拟边界频率时,一定要考虑预畸变矫正。
只有这样,最终设计结果才能满足所给指标。
设计高通数字滤波器时,相应的模拟高通滤波器3dB截止频率为
(3-4)
设计带通数字滤波器时,相应的模拟滤波器的3dB截止频率为
(3-5)
调用MATLAB频率变换函数lp2lp,lp2hp,lp2bp,分别实现从模拟低通到模拟低通,高通带通,带阻的频率变换。
[Bt,At]=lp2hp(B,A,wc),将系数向量为B和A的模拟滤波器归一化低通原型(3Db)截止频频为1rad/s),变换成3dB截止频率为wc的高通模拟滤波器,返回高通模拟滤波器系数向量Bt和At。
[Bt,At]=lp2bp(B,A,wo,Bw)将系数向量为B和A的模拟滤波器归一化低通原型变换成中心频率为wo,带宽为Bw的带通模拟滤波器,返回带通模拟滤波器的系数向量Bt和At。
其中,wo=uclcΩΩ,lcucwBΩ−Ω=,由以上原理我们来编写如下程
%用双线性变换法设计数字高通和带通滤波器
clear;
closeall
T=1;
wch=pi/2;
%T:
采样间隔,wch:
数字高通3dB截止
Wlc=0.35*pi;
wuc=0.65*pi;
%wlc,wuc;
数字高通3dB截止频率
B=1;
A=[1,2.6131,3.4142,2.6131,1];
[h,w]=freqs(B,A,512);
%求原归一化模拟滤波器的频率响应
subplot(3,2,1);
plot(w,20*log10(abs(h)));
%画模拟滤波器幅频特性
grid;
axis([0,10,-90,0])
xlabel('
w/'
);
title('
模拟低通幅度(dB)'
)%
(1)设计高通
omegach=2*tan(wch/2)/T;
%预畸变求模拟高通3dB截止频率
[Bhs,Ahs]=lp2hp(B,A,omegach);
%模拟域低通转换为高通系数
[Bhz,Ahz]=bilinear(Bhs,Ahs,1/T);
%模拟转换位数字高通系数变量
[h,w]=freqz(Bhz,Ahs,512);
%求画出数字滤波器幅频特性
Subplot(3,2,3);
plot(w/pi,20*log10(abs(h)));
axis([0,1,-150,0])
title('
数字滤波器幅度(dB)'
)%
(2)设计带通
omegalc=2*tan(wlc/2)/T;
%预畸变求滤波器通带低端截止频率
omegauc=2*tan(wuc/2)/T;
%预畸变求滤波器通带高端截止频率
wo=sqrt(omegalc*omegauc);
Bw=omegauc-omegalc;
[Bbs,Abs]=lp2bp(B,A,wo,Bw);
%模拟域低通转换为带通系数
[Bbz,Abz]=bilinear(Bbs,Abs,1/T);
%模拟转换为数字带通系数变量
[h,w]=freqz(Bbz,Abz,512);
%求并画出数字滤波器幅频特性
subplot(3,2,4);
w/pi'
)
程序运行结果如图3.1.2,3.1.3,3.1.4所示分别表示模拟低通幅度,数字高通幅度和数字带通幅度特性。
、
图3.1.2模拟低通幅度
Figure3.1.2analoglowpassfilter’srange
图3.1.3数字高通幅度
Figure3.1.3digitalhighpassfilter’srange
图3.1.4数字带通幅度
Figure3.1.4digitalbandpassfilter’srange
3.1.3结论
从以上一系列函数设计中,我们由MATLAB函数来设计滤波器是次优化的,它的设计步骤为:
1先选择设计方法;
2猜测滤波器参数,后进行设计;
3观察滤波器的响应,判断其是否符合要求;
4反复这一尝试与失败过程直到符合要求。
这种设计方法,很显然在设计要求上进行权衡分析是不是很有效,它更多时候是凭借设计者的经验来设计的,需要反复的检验,并且编程的过程很繁琐,工作量是比较大的,因此我们下面将探讨更优化的设计方法。
3.2基于信号处理用户界面设计IIR数字滤波器
基于MATLAB函数的滤波器设计完成后,需要对已设计的滤波器的频率响应要进行校核。
要得到幅频、相频响应特性,运算量也是很大的。
而利用MATLAB强大的信号处理界面工具进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。
3.2.1FDATOOL设计IIR数字滤波器
我们将以一个IIR滤波器的设计实例来具体说明使用MATLAB工具箱的方便。
要求设计Chebyshev1型低通滤波器满足指标,首先在ResponseType中选择Bandpass高通滤波器,然后在下面的DesighMethod中选择IIR类型,并且指定FilterOrder项中的阶数SpecifyOrder=10,由于是设计chebyshev滤波器,其下面Option就不必选择。
然后在FrequencySpecifications中选择Unit为Hz,给出采样频率Fs=1000,;
最后在MagnitudeSpecification中选择Unit为dB,Apass=1。
设置完成后点击DesignFilter即可得到所设计的IIR滤波器。
通过菜单选项Analysis可以在特性区看到所设计的幅频响应、相频响应、冲击响应和零极点配置等特性。
设计完成后将结果保存,封装为filterl.fda文件,下面是运用FDATool设计滤波器:
其中幅频特性如图3.2.1所示
图3.2.1FDA设计主界面
Figure3.2.1maincontactsurfaceofFDAdesign
图3.2.2相频特性
Figuer3.2.2phase-frequencycharacteristic
图3.2.3冲激响应特性
Figure3.2.1Impulseresponsecharacteristic
3.2.2结论
从以上这些界面中我们可以清晰明了的看到设计的该滤波器的幅频,相频和冲击响应特性:
我们能够分析到,图3.2.1中Chebshev1型滤波器具有等纹波的通频带、阻带衰减的特性,总之,使用FDATOOL工具包设计和分析滤波器,是非常方便易行的,而且交互性良好,不需要极其复杂的程序编制就可以实现。
而且我们在最后的仿真模型设计中将载入这一模块进行信号滤波。
4基于FDESIGN更加优化的设计方法
4.1FDESIGN设计方法
FDESIGN是一种面向对象的滤波器设计方法。
这种设计方法的设计思路是:
1载入需要处理的信号源
2根据需要,设计相应的数字滤波器,对信号进行滤波,显示滤波后效果
3分析滤波后信号的频谱,如果未达到要求,可以修改滤波参数重复试验
4.2基于SPTOOL设计IIR数字滤波器(面向对象设计)
SPTOOL是FDESIGN设计法中常用的工具箱,它包含了信号处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览,因此只需要操作界面就可以载入,观察,分析,和打印数字信号,分析和设计数字滤波器[5]。
首先在MATLAB命令窗口输入sptool命令:
在命令窗中写入以下命令
Fs=500;
t=(0:
500)/Fs;
f=sin(2*pi*t*40)+sin(3*pi*t*50)+sin(2*pi*t*100);
此时,变量Fs、t、s将显示在workspace列表中,如图4.2.1所示;
我们按照以下步骤操作:
1)点击菜单File/Import将信号f导入并取名为f。
2)单击Filters列表下的New,按照参数要求设计出滤波器filt1。
3)将滤波器filt1应用到f信号序列。
分别在Signals、Filters、Spectra列
表中选择f、filt1、mtlbseauto单击Filters列表下的Apply按钮,在弹出的ApplyFilter对话框中将输出信号命名为信号3。
4)进行频谱分析。
在Signals中选滤波后的信号信号3,单击Spectra下的Create按钮在弹出的SpectraViewer界面中选择Method为FFT,Nfft=512,单击Apply按钮生成滤波后信号的频谱。
图4.2.1SPTOOL主界面
Figure4.2.1SPTOOLmaincontactsurface
图4.2.2IIR低通滤波器设计指标
Figure4.2.2IIRlowpassfilter'
sdesigntarget
图4.2.3模拟信号源f
Figure4.2.3analogsignalsourcef
图4.2.4滤波后的信号3
Figure4.2.4signal3afterfilted
图4.2.5滤波后经过FFT处理后的频谱
Figure4.2.5frequencyspectrumafterfilted,throughFFTprocessing
分别选中原信号f、滤波后信号3,信号3的频谱,单击各自列表下方的View按钮,即可观察他们的波形,如图4.4所示。
低通滤波器filt1使输入信号f中频率为40hz的正弦波信号通过,而将频率为75hz和100hz的正弦波信号大大衰减。
在图4.2.5中我们能很清楚的看到滤出的信号3集中在40HZ的频率区,说明滤波的效果比较理想。
这样滤波后的信号波形非常清楚的展现在用户面前。
3结论
SPTOOL界面提供了简单,直观的,更加优化的数字处理方式。
我们可以根据原信号的特点,在SPTOOL界面中设计我们所需要的滤波器的特性,来对原信号进行处理,它能有效满足信号处理要求,是一种更加灵活的滤波器设计方式,因此我们常常会选择这种更加优化的方式来设计滤波器。
5IIR数字滤波器的仿真
5.1SIMULINK仿真框图设计
建立信号传输仿真模块,我们首先打开SIMULINK工具箱,并且建立一个Model,在这个空白Model中进行环节库及框图的建立,在SIMULINK菜单下找到Source,双击Source图标,将正弦信号源和常量信号源拉到Model中,然后分别找到DSP离散正弦信号源,乘法器和加法器以及示波器,然后把需要用来设计IIR数字滤波器的模块FDATOOL都拉到Model中,把环节都布好后,把各环节的端口按框图连接起来。
5.2参数设定及载入FDATOOL文件
下面就来仿真2.4.1中信号处理的模型,以框图的方式直观地现实信号处理的过程,信号源为f=sin(2*pi*t*40)+sin(3*pi*t*50)+sin(2*pi*t*100),在DSP离散信号模块中设定参数分别为40HZ,75HZ,100HZ,在simulink环境中,将2.3.1中封装好的filterl.fda滤波器文件载入FDATOOL中,生成仿真框图和滤波效果如图所示。
图5.2.1仿真模型
Figure5.2.1simulationmodel
图5.2.2滤波效果
Figure5.2.2filting’seffect
3.2.2IIR滤波器设计思想
IIR滤波器设计思想是:
利用已有的模拟滤波器设计理论,首先根据设计指标设计一个合适的模拟滤波器,然后再通过脉冲响应不变法或双线性变换法,完成从模拟到数字的变换。
常用的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Ellipse)滤波器、贝塞尔(Bessel)滤波器等,这些滤波器各有特点,供不同设计要求选用。
滤波器的模拟数字变换,通常是复变函数的映射变换,也必须满足一定的要求
由于数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标进行归一化处理,设采样频率为Fs,归一化频率的计算公式是:
利用完全设计法设计数字滤波器的步骤:
(1)将设计指标归一化处理。
(2)根据归一化频率,确定最小阶数N和频率参数Wn。
可供选用的阶数选择函数有:
buttord,cheblord,cheb2ord,ellipord等。
(3)运用最小阶数N设计模拟低通滤波器原型。
根据最小阶数直接设计模拟低通滤波器原型,用到的函数有:
butter,chebyl,cheby2,ellip和bessel。
如[B,A]=butter(N,Wn,'
type'
)设计'
型巴特沃斯(Butterworth)滤波器filter。
N为滤波器阶数,Wc为截止频率,type决定滤波器类型,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 设计 IIR 数字滤波器