摘要 数字滤波器是由数字乘法器、加法器和延时单元组成的一种装置。数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。近年来数字滤波在通信、图像编码、语言编码、雷达等许多领域中有着十分广泛的应用。
本文首先介绍了数字滤波器的研究背景及其发展现状,然后介绍了FIR数字滤波器的设计原理。在理解设计方法的基础上,最后基于MATLAB软件利用窗函数法实现了FIR数字带通滤波器的设计。仿真结果表明,所设计的滤波器具有良好的滤波器特性,所设计的指标符合设计任务要求。
关键词 MATLAB;FIR数字滤波器;窗函数;带通滤波器
I
I
IV
II
Realization of FIR Digital Filter Based On matlab
Name
###########################
Abstract Digital Filter is a kind of instrument which is assembled with Digital multiplier, adder, and delay element , the function of the Digital Filter is operating and dealing with the digital code of discrete signal which is inputted to change the frequency spectrum . In recent years , Digital Filter is widely applied to all kinds of areas, such as Signal communication, image coding ,language coding ,radar and so on.
This paper firstly introduces the studying background and current developing status of Digital FIR Filter, and then shows its design principle .Finally we realize the design of FIR Bandpass Digital Filter with Window Function based MATLAB software at the basement of understanding design methods. The outcome of simulation indicates that the Digital Filter does well in meeting the filter characters, at the same time ,indexes from the filter complies with the design requirements.
Keywords MATLAB; FIR Filter; Window Function Design; Band Pass Filter
II
II
IV
II
目 次
1 引 言 1
1.1 数字滤波器的研究背景和意义 1
1.2 数字滤波器的发展及其现状 1
1.3 数字滤波器的实现方法 2
1.4 MATLAB简介 2
2 FIR数字滤波器的设计原理 4
2.1 FIR数字滤波器的特点 4
2.2 FIR数字滤波器的实现结构 4
2.3 窗函数法的设计原理 7
3 FIR数字滤波器的设计与实现 9
3.1几种常用的窗函数 9
3.2 利用窗函数设计FIR带通滤波器的设计步骤 12
3.3 基于MATLAB的FIR数字带通滤波器的仿真实现 13
结论 17
参考文献 18
致 谢 19
III
III
19
II
1 引 言
在线性系统中,信号滤波过程一般定义为,当输入波形通过一个系统时,对它作一个线性运算,在时间域上这种变换如像内插,外插微分和积分,在频率域上这种变换则如低通滤波或平滑,带通滤波,谱设计和谱分析。如模拟滤波器对连续时间信号的这种运算,在数学上是用线性常系数微分方程确定的。用拉普拉斯变换可在S域内进行这些运算的分析。用傅立叶变换则在f域内分析。同样的,可用常系数线性方程来定义离散时间信号的线性变换,并且用二变换来分析和合成离散时间滤波器[1]。
1.1 数字滤波器的研究背景和意义
当今,数字信号处理技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科;它与国民经济息息相关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。
数字化、智能化和网络化是当代信息技术发展的大趋势,而数字化是智能化和网络化的基础,实际生活中遇到的信号多种多样,例如广播信号、电视信号、雷达信号、通信信号、导航信号等等。上述这些信号大部分是模拟信号,也有小部分是数字信号。模拟信号是自变量的连续函数,自变量可以是一维的,也可以是二维或多维的。大多数情况下一维模拟信号的自变量是时间,经过时间上的离散化(采样)和幅度上的离散化(量化),这类模拟信号便成为一维数字信号。因此,数字信号实际上是数字序列表示的信号,语音信号经采样和量化后,得到的数字信号是一个一维离散时间序列;而图像信号的经采样和量化后,得到的是数字信号是一个二维离散空间序列[2]。
数字滤波技术是数字信号分析、处理技术的重要分支。无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传输时至关重要的。在所有的电子系统中,使用最多技术最复杂的要算数字滤波器了。数字滤波器的优劣直接决定产品的优劣。
1.2 数字滤波器的发展及其现状
数字滤波是从20世纪60年代发展起来的,当时主要采用计算机模拟的方法研究数字滤波问题。到了70年代,开始将微处理器应用于数字滤波。但是由于微处理器速度不高,在很多场合都难以实现实时处理。随着VLSI技术的发展,使用硬件来实现数字滤波器已成为可能。80年代,通用数字信号处理器的成熟和大量涌现,使得音频范围内数字滤波技术迅速得到广泛的应用。近些年来,除了不断提高通用信号处理器的速度和功能外,还出现了许多工作频率达100MHZ以上的专用芯片和积木式部件,从而使数字滤波技术进入视频实时处理阶段[3]。
数字滤波在通信、图像编码、语言编码、雷达等许多领域中有着十分广泛的应用。目前,数字信号滤波器的设计图像处理、数据压缩等方面的应用取得了令人瞩目的进展和成就。近年来迅速发展起来的小波理论,由于其局部分析性能的优异在图像处理中的应用研究,尤其是在图像压缩、图像去噪等方面的应用研究。
1.3 数字滤波器的实现方法
数字滤波器在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。数字滤波器的实现,大体上有如下几种方法:
1. 用单片机来实现。
目前单片机的发展速度很快,功能也很强依靠单片机的硬件环境和信号处理软件可用于工程实际,如数字控制,医疗仪器等。
4
IV
19
II
2. 用DSP来实现。
DSP芯片较之单片机有着更为突出的优点,如内部带有乘法器,累加器,采用流水线工作方式及并行结构,多线程,速度快,配有适用于信号处理指令等,DSP芯片的问世及飞速发展,为信号处理技术应用于工程实际提供了可能。
3. 在通用的微型计算机上用软件的方法来实现。
软件可以由自己编写或者使用现成的。自IEEE DSP Comm于1979年出第一个信号处理软件包以来,国外的研究机构也陆续推出不同语言不同用途的信号处理软件包[4]。MATLAB软件具有良好的工作平台及编程环境、简单易用的程序语言、强大的科学计算机数据处理能力和出色的图形处理功能等。因此,本文主要采用MATLAB软件来实现FIR数字滤波器的设计。
1.4 MATLAB简介
MATLAB是由美国Mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境[5]。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域[6]。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB具有以下特点和优势:
1.高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来。
2.具有完备的图形处理功能,实现计算结果和编程的可视化。
3.友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握。
4.功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具[7]。
5
V
19
II
2 FIR数字滤波器的设计原理
FIR滤波器设计的任务是选择有限长度的,使传输函数满足一定的幅度特性和线性相位要求。由于FIR 滤波器很容易实现严格的线性相位,所以FIR 数字滤波器设计的核心思想是求出有限的脉冲响应来逼近给定的频率响应。
设计过程一般包括以下三个基本问题[8]:
(1) 根据实际要求确定数字滤波器性能指标;
(2) 用一个因果稳定的系统函数去逼近这个理想性能指标;
(3) 用一个有限精度的运算去实现这个传输函数。
2.1 FIR数字滤波器的特点
FIR数字滤波器相比较于IIR数字滤波器有以下的特点:
(1) 单位抽样响应h(n)是有限长的,因此FIR数字滤波器一定是稳定的。
(2) 经延时,h(n)总可变成因果序列,所以FIR数字滤波器总可以由因果系统实现。
(3) h(n)为有限长,可以用FFT实现FIR数字滤波器。
(4) FIR的系统函数是的多项式,故IIR的方法不适用。
(5) FIR的相位特性可以是线性的,因此,它有更广泛的应用。
2.2 FIR数字滤波器的实现结构
FIR滤波器的传递函数一般有如下形式:
(1)
其基本结构有以下几种:直接型,级联型,线性相位型,频率采样型。
1. 直接型
直接型也称卷积型或横截型,称为卷积型,是因差分方程是信号的卷积形式;称为横截型,是因为滤波器是一条输入x(n)延时链的横向结构。直接由差分方程可画出对应的网络结构。其FIR滤波器的直接型结构结构图如图1所示,FIR滤波器的直接型转置结构如图2所示。
(2)
式中,为实数;x(n)为输入序列,y(n)为输出序列,h(n)单位采样响应。
直接型结构的优点是:简单直观,乘法运算量较少;缺点是,调整零点较难。
3 线性相位型
FIR滤波器的重要特点是可设计成具有严格线性相位的滤波器,此时H(z)满足偶对称或奇对称条件。其单位冲击响应有如下特性:
4. 频率采样型
频率采样型结构是一种用系数将滤波器参数化的一种实现结构。一个有限长序列可以由相同长度频域采样值唯一确定。系统函数在单位圆上作N等分取样就是单位取样响应h(n)的离散傅里叶变换H(k)。H(k)与系统函数之间的关系可用内插公式表示:
(7)
由上看出,FIR系统可用一子FIR系统和一子IIR系统级联而成。
其网络结构(信号流图)如图5所示。
图5 FIR滤波器的频率采样型结构
频率采样型结构的优点有:
(1) 选频性好,适于窄带滤波,这时大部分H(k)为零,只有较少的二阶子网络。
(2) 不同的FIR滤波器,若长度相同,可通过改变系数用同一个网络实现。
(3) 复用性好。
频率采样型结构的缺点:
(1) 具体实现时难免存在误差,零、极点可能不能正好抵消,造成系统不稳定。
(2) 结构复杂,采用的存贮器多[9]。
2.3 窗函数法的设计原理
FIR数字滤波器的设计主要有三种设计方法:窗函数法、频率抽样法、切比雪夫逼近法。鉴于窗函数法的原理简单明了、选择性多、易于实现的优点等。本文主要运用窗函数法来进行设计。以下就有关窗函数法的基本原理进行简单介绍。
这样用一个有限长的序列h(n)去代替
,肯定会引起误差,表现在频域就通常所说的吉布斯效应。该效应引起的过渡带加宽以及带通和阻带内的波动,尤其使阻带的衰减小,从而满足不了技术上要求,这种吉布斯效应是由于将
直接截取引起的,因此,也成为截断效应[10]
图6窗函数设计法的时域波形