一种IIR数字带通滤波器的设计

一种IIR数字带通滤波器的设计
一种IIR数字带通滤波器的设计

基于MATLAB 一种IIR数字带通滤波器的设计与仿真

摘要:根据一实例提出基于MATLAB的两种设计IIR数字带通滤波器的方法,给出了MATLAB完整程序与SPTool工具界面设计的详细步骤,并用Simulink进行仿真。

关键词:MATLAB;数字滤波器;IIR,SPTool,设计;仿真;

The Application of MATLAB in the Design and Simulation of one kind IIR Digital Dandpass Filter Abstract:This paper presents two methods based on MATLAB to design IIR digital bandpass filter effectively according to one example。The detailed program and process of designing an interface by using the SPTooI is given,and the filter simulation based on MATLAB language and Simulink is also introduced in this paper。

Key words:MATLAB;digital filter;IIR;SPTool;design;simulation;

1 引言

随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。目前数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理中起着重要的作用并已获得广泛应用的是数字滤波器(DF,Digital Filter),根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应IIR(Infinite Impulse Response)滤波器和有限冲激响应FIR(Finite Impulse Response)滤波器。与FIR滤波器相比,IIR的实现采用的是递归结构,极点须在单位圆内,在相同设计指标下,实现IIR滤波器的阶次较低,即所用的存储单元少,从而经济效率高。

MATLAB是英文MA Trix LABoratory(矩阵实验室)的缩写。它是美国的MathWorks公司推出的一套用于科学计算和图形处理可视化、高性能语言与软件环境。它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。在设计数字滤波器时,通常采用MA TLAB来进行辅助设计和仿真。

本文以MA TLAB7. 1为设计平台,利用MATLAB完全工具函数Ellip与SPTool工具进行IIR数字带通滤波器的设计,并加以仿真。

2 数字滤波器的基本概念

滤波器的种类很多,从功能上可分为低通、高通、带通和带阻滤波器,每一种又有模拟滤波器和数字滤波器两种形式。如果滤波器的输人和输出都是离散时间信号,则该滤波器的冲击响应也必然是离散的,这种滤波器称之为数字滤波器。

数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。数字滤波器也是具有一定传输选择特性的数字信号处理装置,其输入、输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。它的基木工作原理是利用离散系统特性对系统输人信号进行加工和变换,改变输入序列的频谱或信号波形,让有用频率的信号分量通过,抑制无用的信号分量输出。数字滤波器除了具有数字信号处理的固有优点外,还有滤波精度高(与系统字长有关)、稳定性好(仅运行在0与I两个电平状态)、灵活性强等优点。

3 数字滤波器设计的基本步骤

数字滤波器的设计要经过如下三个步骤:

(1)确定指标:

在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形式一般在频域中给出幅度和相位响应。

(2)模型逼近:

一旦确定了技术指标,就可利用已学习过的基本原理和关系式,提出一个滤波器模型来逼近给定的指标体系。这是滤波器设计所要研究的主要问题。

(3)实现性能分析和计算机仿真

以上两步的结果得到的滤波器,通常是以差分方程、系统函数或脉冲响应描述的。根据这个描述就可以分析其频率特性和相位特性、以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。

4 设计实例

4.1 MATLAB程序设计法

MATLAB信号处理工具箱提供了各种滤波器设计函数及滤波器实现函数,Ellip是完全设计函数之一,其调用格式为[b,a]=ellip(n,Rp,Rs,Wn,Options),n为滤波器阶数,Rp表示通带波纹最大衰减,

Rs 表示阻带波纹最小衰减,Wn 为滤波器的归一化截止频率(Nyquist 频率为1Hz );函数默认为低通或带通滤波器:低通滤波器时,Wn 为截止频率;带通滤波器时,截止频率Wn=[W1,W2]。a 分别为滤波器传递函数分子和分母系数向量;options 为滤波器类型参数:high 为高通滤波器,截止频率为Wn ;stop 为带阻滤波器,截止频率Wn=[W1,W2]。

例:产生有三个正弦成分(5Hz ,15 Hz 和30Hz )的信号,设计一滤波器来去除5Hz 和30Hz 的正弦信号,保留15 Hz 的信号。

根据题目要求结合所学知识首先选用ellip 函数直接设计此滤波器(IIR 数字带通滤波器),其完整MA TLAB 程序如下:

1) 产生含有3个正弦分量的信号(如图一所示)

Fs=100;

t=(1:100)/Fs;

s1=sin(2*pi*t*5);s2=sin(2*pi*t*15);

s3=sin(2*pi*t*30);

s=s1+s2+s3;

plot(t,s);title('含有3个正弦分量的信号');

set(gcf,'color','white');

xlabel('Time(seconds)'); ylabel('Time waveform'); 2) 产生一个4阶IIR 带通滤波器,通带为10Hz 到20Hz ,

并得出其幅频响应(如图二所示)

[b,a]=ellip(4,0.1,40,[10,20]*2/Fs);

[H,w]=freqz(b,a,512);

plot(w*Fs/(2*pi),abs(H));

title('IIR 带通滤波器幅频响应');

set(gcf,'color','white');

xlabel('Frequency(Hz)');

ylabel('Mag.of frequency response'); grid;

3) 对信号进行滤波(滤波后信号如图三所示)

sf=filter(b,a,s);

plot(t,sf);

title('滤波后的信号波形');

set(gcf,'color','white');

xlabel('Time(seconds)'); ylabel('Time waveform');

axis([0 1 -1 1]);

4) 绘出信号滤波前、后的幅频图(如图四所示) S=fft(s,512);

SF=fft(sf,512);

w=(0:255)/256*(Fs/2);

plot(w,abs([S(1:256)',SF(1:256)']));

title('滤波前、后的幅频图');

set(gcf,'color','white');

xlabel('Frequency(Hz)');

ylabel('Mag.of frequency response'); grid;

legend({'滤波前的幅频','滤波后的幅频'})

4.2利用SPTool 工具进行设计

SPTool 是信号处理工具箱中一个具有交互式图形用户界面的信号处理工具,专门用于完成常用的数字信号处理任务。通过这个工具,只需要鼠标简单的操纵鼠标(点击或拖动),就可以完成载入、观察、分析、实现和设计数字滤波器并进行谱分析等甚至十分复杂的数字信号处理任务,而不需要用户对数字滤波器的设计原理非常熟悉。

利用SPTool 工具进行本例的设计有如下几个步骤:

图二:IIR 带通滤波器同幅频响应

图四:滤波前、后的幅频图

图一:含有3个正弦分量的信号

图三:滤波后的信号波形

1) 创建并导入信号源;

在MA TLAB 命令窗口输入命令:

Fs=100;t=(1:100)/Fs;

s= sin(2*pi*t*5) + sin(2*pi*t*15) + sin(2*pi*t*30);

此时,变量Fs 、t 、s 将显示在MA TLAB 的workspace 列表中。在MTLAB 命令窗口中输入sptool ,即可弹出SPTooI 的主界面(如图五所示),点击菜单File/Import 则打开了“Import to SPTool ”对话框,将信号s 和采样频率Fs 导入并命名为Sig_ s 。

波器的名字filt1

,采样频率Fs 和设计方法

Elliptic IIR ;左侧的Specification 面板用来指定

设计指标;order 为4,type 为

bandpass ,

passband

中的FP1为10,FP2为20,RP 为0.1,stopband 为40;完成以上输入之后单击Apply 按钮,则完成了滤波器的设计;中间的Frequency Response 面板则根据设计指标自动绘出滤波器的幅频响应,而右侧的Measurements 面板显示了滤波器设计完成后的实测参数。

此时在Filters 栏中,选中filt1按下View 按钮即弹出FVTool 界面(如图七所示),我

们还可以观察到滤波器的相位响应、幅频相位响应、脉冲响应、阶跃响应等等(只须点击界面上的相应快捷按钮)。

3) 将滤波器应用到s 信号序列。分别在Signals 、Filters 栏中选择s 、filt1单击Filters 栏列表下

的Apply 按钮,在弹出的Apply Filter 对话框中将输出信号命名为Sig_sf (滤波后信号)。同时按下Alt 与Shift 键选中Sig_s 与Sig_sf 点击Signals 栏下的View 可观察到它们的时域波形,如图八所示。

4) 进行频谱分析。在Signals 中选择Sig_sf ,单击Spectra 栏下的Create 按钮,在弹出的Spectra

Viewer 界面中选择method 为FFT ,nfft=512,单击Apply 按钮生成sf 的频谱spect_sf ,同理得到s 的频谱spect_s ,同时按下Alt 与Shift 键选中spect_s 与spect_sf 点击Spectra 栏下的View 可观察到它们的频谱,如图九所示。

IIR 带通滤波器filtl 使输入信号s 中频率为15hz 的正弦波信号通过,而将频率为5hz 和30hz 的正弦波信号大大衰减,从而可知所设计的滤波器满足题目要求。

4.3 两种方法的比较

将Ellip 函数设计的滤波器从工作空间导入到SPTool 工具的Filters 栏中,通过滤波器分析工具FVTool 可以看出两种方法设计出来的滤波器性能完全相同,相比于利用滤波器设计函数一条一条的编写程序来说,选用SPTool 工具设计数字滤波器要来得更简单、快捷、方便、实用!

4.4 Simulink 仿真

通过调用Simulink 中的功能模块,可以构成数字滤波器的仿真框图,如图十所示。仿真过程中的滤波器是从工作空间直接导入到滤波器仿真模块的,没有再利用FDATool 滤波器设计工具进行新

图九:滤波前、后的信号的频谱

的设计,因为发现在实际中达到相同效果利用FDATool 工具所设计的滤波器的阶次要比以上两种方法的阶次的两倍还多。在MATLAB 工作空间filt1的阶次是4次,而导入之后界面显示滤波器的阶次为8次,有关这个问题有待进一步的研究。

比较图十二Scope 与Scope1图中的波形可知,输入的信号经过滤波器滤波后,频率为5hz 和30hz 的正弦波信号大大衰减,而频率为15hz 的正弦波信号通过,从而说明滤波器的设计是恰当的。

5 结论

本文作者创新点:提出关于滤波器的设计可以充分地利用MA TLAB 信号处理工具箱(实际上,MATLAB 针对许多不同的专门领域开发了功能强大的工具箱,这涉及到控制系统、信号处理、神经网络、小波分析等领域,利用这些工具箱提供的函数,用户可以快速地解决该领域的许多问题),一题给两解并验证得出结论,且用Simulink 进行仿真。

基于MATLAB 的信号处理工具箱(Signal Processing Toolbox)的SPTool 工具可以更快速有效地设计由软件组成的常规数字滤波器,设计方便、快捷,大大减轻了工作量。在设计过程中可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化。滤波器的设计工作完成后,可以借助MATLAB 中的export 操作导出所设计滤波器的系统函数H(z)。由于MATLAB 具有强大的接口功能,仿真后的结果可以很方便的移植到DSP 、CPLD 或FPGA 等器件中,在此不做过多的阐述了。

参考文献:

[1] 刘波等MATLAB 信号处理 北京:电子工业出版社,2006

[2] 飞思科技产品研发中心MA TLAB7辅助信号处理技术与应用 北京:电子工业出版社, 2005

[3] 楼顺天,李博苗 基于MATLAB 的系统分析与设计一信号处理 西安:西安电子科技大学出版社,1998.

[4] 张葛祥,李娜 MA TLAB 仿真技术与应用 北京:清华大学出版社,2003

[5] 胡广书 数字信号处理、理论、算法与实现[M].北京:清华大学出版社,1997

[6] 陈希林,肖明清. 一种LabWindows/CVI 与MATLAB 混合编程的实现方法[J].微计算机信

息,2005,1:43-45

仿真框图

相关主题
相关文档
最新文档