Matlab7.1环境下IIR滤波器的设计与仿真

时间:2022-08-26 02:35:38

Matlab7.1环境下IIR滤波器的设计与仿真

摘要:在Matlab7.1环境下IIR数字滤波器的设计有三种方法,典型设计法,完全设计法,FDATOOL设计法。由于典型设计法与完全设计法具有复杂的设计过程、大量的计算工作、调整滤波器的特性困难的特点,限制了这两种方法的应用。该文重点介绍第三种快速有效的设计数字滤波器的方法——FDATOOL设计法。并详细说明了运用Matlab语言进行完全设计法和利用FDATOOL进行IIR数字滤波器界面设计的步骤。FDATOOL界面设计法试我们可以直观简便的随时对比设计要求和调整滤波器特性参数,对于减轻设计工作量和最优化滤波器设计起到极大的作用。同时还说明了在Matlab环境下如何利用simulink对所设计的IIR数字滤波器仿真。

关键词:Matlab7.1;IIR数字滤波器;数字信号处理;无限冲激响应

中图分类号:TP391.9 文献标识码:A 文章编号:1009-3044(2013)19-4499-04

IIR数字滤波器属于经典数字滤波器中的一种,应用非常广泛。然而,在实际使用中,数字滤波器的设计要进行复杂的推导和计算, 所以运算量非常庞大。现在,常通过计算机,利用Matlab来实现数字滤波器的仿真与设计。

Matlab7.1是美国MATHWORK公司推出的一套面向科学和数值计算的可视化语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,是一个高度集成系统,具有友好的用户界面和良好的帮助功能。该文是在 Matlab7.1环境,利用其自带的信号处理工具箱( Signal Processing Toolbox),其具有强大的信号处理和分析功能,其中自带了许多函数, 可以快速有效地实现数字滤波器的设计与仿真[1]。有高效 、简便及可视化程度高的特点 ,并具有存储滤波器参数 向量的功能,可分析显示滤波器系统的幅频 、相频特性,以及对给定信号经所设计的滤波器进行滤波并分析表示了滤波前和滤波后的幅频 、相频特性。

1 IIR数字滤波器及典型设计方法

1.1 数字滤波器

数字滤波器是数字信号处理的重要基础,在对信号的过滤、检测与参数估计等处理过程中,它是使用最为广泛的一种系统。数字滤波器是指完成信号滤波处理功能的、用有限精度算法实现的离散时间线性非时变系统,其输入是一组由模拟信号取样和量化的数字量,其输出是经过数字变换的另一组数字量。数字滤波器具有稳定性高、精度高、灵活性大等突出优点。可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。IIR 滤波器是一类LTI 系统,这类系统有无限持续时间的冲击响应[2]。

1.2 IIR数字滤波器设计的基本原理

滤波器的设计实质上就是去寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。反馈系统中,这一时刻的输出,将会反馈作为下一时刻输入的一部分,由于输出抽样值与之前的输出值有关,从计算的观点出发,这样的滤波器也称为递归滤波器。对于N阶IIR数字滤波器,其系统函数可表示为:

1.3 IIR数字滤波器典型设计法

IIR数字滤波器具有无限宽的冲击响应, 与模拟滤波器相匹配。根据IIR滤波器特性,可通过设计模拟滤波器,再在此基础上进行变换的方法来进行设计,即为IIR数字滤波器典型设计法。其设计步骤为:

1)转换技术指标。即根据一定规则将已知的数字滤波器的技术指标转换为模拟低通滤波器的技术指标;

2)确定最小阶数及固有频率。即根据第一步的结果,通过滤波器阶数选择函数,将固有频率Wn以及最小阶数N确定。

3)生成模拟滤波器系统函数。通过上一步所得到的最小阶数,得到H(s)(模拟滤波器系统函数)。

4)将模拟滤波器的系统函数H(s),从S平面转到z平面 ,得到数字低通滤波器的系统函数H(z)。

5)将模拟滤波器转换成数字滤波器。可通过双线性变换法、冲击响应不变法来实现。

2 IIR数字滤波器完全设计法

Matlab提供了几个直接设计IIR 数字滤波器的专用函数如:butter, chebyl, cheby2, ellip和 bessel。设计时可以直接调用这些函数就能设计出低通、高通、带通和带阻滤波器[3]。

完全设计法实例:设计一个滤波器滤除指定正弦信号中的噪声,还原正弦信号。该正弦信号为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

t1=0:1/2000:0.25;

A=sin(2*pi*100*t1);B=sin(2*pi*50*t1); C=sin(2*pi*150*t1); % 所给的技术指标

Wp1=90;Wp2=110;Ws1=80;Ws2=120; Fs=2000;Rp=1;Rs=20;

Wp=[Wp1,Wp2];Ws=[Ws1,Ws2]; %归一化处理

[n,Wn]=buttord(Wp/(Fs/2),Ws/(Fs/2),Rp,Rs); %计算巴特沃兹滤波器的阶次和截止频率

[b,a]=butter(n,Wn); %频率变换法设计巴特沃斯带阻滤波器,调用系统函数

[h,w]=freqz(b,a,512); %绘出频率特性

subplot(2,2,1);plot((w/pi)*Fs/2,20*log10(abs(h)));

grid;xlabel('Hz');ylabel('数字带通幅度(dB)');

D=A+B+C;

E=filter(b,a,D); %对信号进行滤波

subplot(2,2,2);plot(t1,A);

subplot(2,2,3);plot(t1,D);

subplot(2,2,4);plot(t1,E);

其次当设计低通和高通时,Wn是一个值,表示截止频率;当设计带通和带阻时,Wn是一个二个元素的数组,表示通带或阻带的上下截止频率。频率的归一化计算方法是:2*截止频率/采样频率。butter函数是根据阶数n和截止频率Wn计算的。ButterWorth滤波器分子分母系数(b为分子系数的矢量形式,a为分母系数的矢量形式)在求出系数后对信号进行滤波时用filter函数。说白了,设计滤波器就是设计滤波器系数[b,a]。

3 数字滤波器FDATOOL设计

3.1 FDATOOL介绍

FDATOOL(Filter Design & Analysis Tool):Matlab信号处理工具箱里专用的滤波器设计分析工具,在Matlab6.0以上的版本中,该工具还专门增加了Filter Design Toolbox(滤波器设计工具箱)。 FDATOOL可以设计几乎所有的基本滤波器,包括了FIR和IIR的各种设计方法。它操作十分简单方便灵活,但功能十分强大[3,4]。

3.2设计实例

FDATool需要根据设计目标设置的参数主要有响应类型、设计方法、滤波器阶数及选项、频率参数和幅度参数等项目,使用不同类型和不同方法的滤波器设计时参数不尽相同,在图4中给出的是前述设计实例的设计指标。设计好滤波器的技术指标参数后,点击Design Filter按键,即可完成设计。如要对设计结果进行分析,可通过分析菜单进行分析。

4 Simulink仿真

Simulink是一个实现动态系统建模和仿真的软件包,为Matlab软件的扩展,。它与Matlab语言的主要区别在于: Simulink与用户交互接口是基于windows的模型化图形输入, 因而用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。所谓模型化图形输入是指其提供了很多按功能分类的基本的系统模块, 用户只需要知道这些模块的输入输出及模块的功能, 而不必考察模块内部如何实现的,通过对这些基本模块的调用, 再将它们连接起来就可以构成所需要的系统模型,进而进行仿真与分析[5]。

实例还是在上文提到的设计实例,在上图中,使用了Simulink中的信号处理模块集合(Signal Processing Blockset)工具箱,其中集成了一些滤波器的模型,方便设计和使用。使用DSP Source中的3个频率的正弦波信号模块SineWave叠加在一起作为输入信号。滤波器为刚使用FDATOOL设计的巴特沃斯IIR带通滤波器。通过 DSP Sinks模块中的向量示波器(Vector Scope)模块对滤波前后的波形图进行输出观察, 模块Vector Scope输出带有干扰的原始信号, Vector Scope1输出滤波后信号,通过两者之间输出结果进行对比。如图6、7 所示,所设计的IIR滤波器仿真模型实现了滤除原始信号中的干扰波的功能,回复出原有的正弦波信号, 达到了设计要求。

5 结束语

在Matlab7.1环境下IIR数字滤波器的设计有三种方法,典型设计法,完全设计法,FDATOOL设计法。典型设计法原理清晰,完全设计法程序简单,但是这两者为传统的数字滤波器,其设计法过程复杂,计算工作量大,滤波特性调整困难,需要反复的累加试验,影响了它的应用。然而利用FDATOOL设计法,在设计时形象直观,方便快捷,极大地减轻工作量,还能随时对比滤波器特性,改变参数,达到最优化的设计,工程上有利于提高设计效率。

参考文献:

[1] 李显宏.Matlab7.X界面设计与编程技巧[M].北京:电子工业出版社,2006.

[2] 程佩青.数字信号处理教程[M].3版. 北京:清华大学出版社, 2007.

[3] 薛年喜.Matlab在数字信号处理中的应用[M].北京:清华大学出版社,2006.

[4] 张登奇.基于Matlab的IIR数字滤波器设计[J].湖南理工大学学报(自然科学版),2009(9).

[5] 刘彬.基于Matlab/Simulink的数字滤波器仿真[J].电子测量技术,2011,34(4).

上一篇:油田公司受控文件在线管理系统开发模式设计 下一篇:Zigbee 技术网络层的研究与分析