FIR数字滤波器设计与仿真设计.docx
《FIR数字滤波器设计与仿真设计.docx》由会员分享,可在线阅读,更多相关《FIR数字滤波器设计与仿真设计.docx(24页珍藏版)》请在冰豆网上搜索。
FIR数字滤波器设计与仿真设计
毕业论文(设计)
题目FIR数字滤波器设计与仿真
学生姓名
学号
院系
专业
指导教师
二○一一年六月二日
FIR数字滤波器设计与仿真
宗铭
南京信息工程大学电子信息工程系,南京210044
摘要:
数字滤波器可以利用软件和数字处理硬件两种方式实现,本文在matlab基础上采用了窗函数设计法、波纹逼近设计法、最小乘方设计法分别设计了低通、带阻、带通、高通FIR数字滤波器,比较了不同方法设计出滤波器的通带、阻带、过渡带以及阶数,通过分析大量的设计仿真指出了不同设计方法的特点:
窗函数设计法设计方法简便,通带内稳定性高,过渡带宽度随滤波器的阶数变化而变化;波纹逼近法设计出的滤波器阶数较低,计算量较小;最小乘方法误差较低,通带内平稳度高并且最小阻带衰减高。
关键词:
FIR;Matlab;数字滤波器
1.引言
1.1课题研究的目的和意义
数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及多门学科并广泛应用于很多科学和工程领域的新兴学科,它是指利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以便提取有用的信息并进行有效的传输与应用,得到符合人们需要的信号形式。
与模拟信号处理相比,数字信号处理具有精确、灵活、抗干扰能力强、可靠性高、体积小、易于大规模集成等优点。
数字信号处理的实现在早期采用通用的处理器实现,但其速度低,价格昂贵。
数字信号处理器(DigitalSignalProcessor)的出现则改变了这一状况,其内部带有专门用于数字信号处理的硬件,因此速度非常快,方便实时快速地实现各种数字信号处理算法。
数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。
数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
与模拟处理相比,数字处理有灵活性强、精度高、处理成本低以及对环境没有特殊要求等优点。
它不仅能实现模拟处理的大部分功能,而且还能完成模拟处理由于成本、可靠性等原因而无法具体实现的功能。
数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
数字滤波在通信、图像编码、语音编码、雷达等许多领域中也有着十分广泛的应用。
数字滤波器是通过对抽样数据进行数学处理来达到频域滤波的目的。
数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现。
用软件来实现数字滤波器优点是:
随着滤波器参数的改变,很容易改变滤波器的性能。
1.2国内外发展现状
现代滤波理论研究的主要内容是从含有噪声的数据记录(又称为时间序列)中估计出信号的某些特征或信号本身。
一旦信号被估计出,那么估计出的信号将比原信号会有高的信噪比。
现代滤波器把信号和噪声都视为随机信号,利用它们的统计特征(如自相关函数、功率谱函数等等)导出一套最佳的估值算法,然后用硬件和软件实现。
目前现代滤波器主要有:
维纳滤波器、卡尔曼滤波器、线性预测器、自适应滤波器等,很多专家将基于特征分解的频率估计及奇异值分解算法都归入现代滤波器的范畴。
GR雷达信号处理分析系统中的信号分析中的滑动平均谱和常规处理中的反褶积运算采用了现代处理的部分功能。
MATLAB是一套用于工程计算的可视化高性能语言与软件环境。
它集成了数值计算、符号计算、可视化建模、仿真和图形处理等功能。
MATLAB语言运算符丰富,既具有结构化的控制语言,又能面向对象编程,语法限制不严格,具又强大的图形功能和功能强大的工具箱。
它为数字滤波的研究和应用提供了一个直观、高效、便捷的利器。
它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个交互式的工作环境中。
MATLAB推出的工具箱使各个领域的研究人员可以直观方便地进行科学研究、工程应用,其中的信号处理(signalprocessing)、图像处理(imageprocessing)、小波(wavelet)等工具箱为数字滤波研究的蓬勃发展提供了有力的工具。
其中MATLAB的信号处理工具箱是专门应用于信号处理领域的专用工具箱,它的两个基本组成就是滤波器的设计与实现部分以及谱分析部分。
工具箱提供了丰富而简便的设计,使原来繁琐的程序设计简化成函数的调用。
只要以正确的指标参数调用相应的滤波器设计程序或工具箱函数,便可以得到正确的设计结果,所以使用非常方便。
MATLAB也是大量的计算机仿真软件中的优秀代表,它在科学研究特别是电子信息科学中有着极为广泛的应用。
MATLAB现已被广泛应用于数学、通信、信号处理、自动控制、神经网络、图形处理等许多不同学科的研究中。
1.3本文的研究工作
本文在MATLAB环境下完成FIR滤波器的设计仿真。
采用窗函数设计法、最优等波动设计法、最小二乘法设计法分别设计低通、带阻、带通、高通FIR数字滤波器,通过大量仿真比较不同方法设计的滤波器幅频特性的通带平稳度、过渡带宽度、最小阻带衰减以及滤波器阶数,分析不同设计方法的特点。
2.数字滤波器
所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。
数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方法不同,数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配等优点。
2.1数字滤波器的分类
数字滤波器按照不同的分类方法,有许多种类,但总起来可以分成两大类。
一类称为经典滤波器,即一般的滤波器,特点是输入信号中有用的频率成分和希望滤除的频率成分各占有不同的频带,通过一个合适的选频率波器达到滤波的目的。
例如,输入信号中含有干扰,如果信号和干扰的频带互不重叠,可滤除干扰得到纯信号。
但对于一般滤波器如果信号和干扰的频带相互重叠,则不用完成对干扰的有效滤除,对时需要采用另一类所谓的现代滤波器,例如维纳滤波器、卡尔曼滤波器、自适应滤波器等最佳滤波器。
这些滤波器可按照随机信号内部的一些统计分布规律,从干扰中最佳地提取信号。
一般数字滤波器从功能上分类,和模拟滤波器一样,可以分成低通、高通、带通和带阻等滤波器。
这种理想滤波器是不可能实现的,因为它们的单位脉冲响应均是非因果且是无限长的,我们只能按照某些准则设计滤波器,使之尽可能逼近它,着些理想滤波器可作为逼近的标准用。
另外,需要注意的是数字滤波器的传输函数
都是以
为周期的,滤波器的低通频率带处于
的整数倍数,而高频频带处于
的奇数倍附近,这一点和模拟滤波器是由区别的。
数字滤波器按照滤波器的网络结构或者单位脉冲响应分类:
可分为IIR滤波器(即无限长单位冲激响应滤波器)和FIR滤波器(即有限长单位冲激响应滤波器)。
2.2FIR滤波器特点
IIR数字滤波器的设计简单方便,特别是采用双线性变换法设计的数字滤波器没有频谱混叠问题,效果较好。
在有些实际应用场合,例如数据传输、图象处理等对滤波器的线性相位特性要求颇为严格,所以在这场合中一般选用FIR数字滤波器。
FIR数字滤波器可设计得具有严格的线性相位,而且其幅度特性可以随意设计。
FIR滤波器的单位冲激响应h(n)是有限长序列,其系统函数的极点位于Z平面原点,因此FIR滤波器不存在稳定问题。
另外,FIR滤波器还可以采用FFT方法实现其功能,从而大大提高了效率,因此,FIR数字滤波器日益引起人们的注意
对于线性相位的滤波器而言,通过滤波器的信号不存在相位失真,只存在固定单位的延迟,而这一点在数字通信、图象处理、语音合成等诸多应用中都极其重要。
FIR数字滤波器具有线性相位特征的条件是它的单位冲激响应h(n)满足偶对称或者奇对称。
若h(n)满足偶对称,则其相位特性
为:
(1)
若h(n)满足奇对称,则其相位特性
为:
(2)
从频域上看h(n)是长度为N的实序列,所以h(n)的N点DFT满足共轭对称性,即:
H(k)=H*(N-k)而幅度函数则一定呈偶对称特性,即:
(3)
当h(n)为偶对称,信号通过该滤波器时,其通带就产生(N-1)/2点群延迟,滤波器的相频特性是相位过原点的一条直线,其斜率为[-(N-1)/2],其幅频特性相当于对信号低通滤波;当h(n)为奇对称,信号通过该滤波器时,其通带不但产生(N-1)/2点群延迟,还对所有通带内各种频率的信号都有一个90°移相,这相当于信号先经过一个90°移相器,然后再作带通滤波。
FIR滤波器灵活,易于实现某些特殊的应用,如构建微分或积分器。
2.3数字滤波器的设计
数字滤波器是一种用来过滤时间离散信号的数字系统,它是通过对抽样数据进行数学处理来达到频域滤波的目的。
数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现。
用软件来实现数字滤波器优点是:
随着滤波器参数的改变,很容易改变滤波器的性能。
IIR滤波器和FIR滤波器的设计方法是很不相同的。
IIR滤波器设计方法有两类,经常用的一类设计方法是借助于模拟滤波器的设计方法进行的。
其设计步骤是;先设计模拟滤波器得到传输函数
,然后将
按某种方法转换成数字滤波器的系统函数
。
这一类方法相对容易一些,这是因为模拟滤波器设计方法已经很成熟,它不仅有完整的设计公式,还有完善的图表供查阅;另外,还有一些典型的滤波器类型可供我们使用。
另一类是直接在频域或者时域中进行设计的,由于要解连立问题方程,设计时需要计算机作辅助设计。
FIR滤波器不能采用由模拟滤波器的设计进行转换得方法,经常用的是窗函数法和频率采样法。
还有一种比较有效的方法是切毕雪夫等波纹逼近法,需通过计算机辅助设计完成。
对于线性相位滤波器,通常采用FIR滤波器,其单位脉冲响应应满足一定条件,可以证明其相位特性在整个频带中是严格线性的,这是模拟滤波器无法达到的。
当然,也可以采用IIR滤波器,但必须使用全通网络对其非线性相位特性进行相位校正,这样增加了设计与实现的复杂性。
一般情况下,数字滤波器是一个线性移不变离散系统,利用有限精度算法来实现。
数字滤波器的设计一般包括:
(1)按照任务的要求,确定滤波器的性能要求;
(2)用一个因果稳定的离散线性移不变系统的系统函数去逼近这一性能要求。
系统函数有无限长单位冲激响应(IIR)系统函数及有限长单位冲激响应(FIR)系统函数两种;
(3)利用有限精度算法来实现这个系统函数。
这里包括选择运算结构、选择合适的字长(包括系数量化及输入变量、中间变量和输出变量的量化)以及有效数字的处理方法(舍入、截尾)等;
(4)实际的技术实现,包括采用通用计算机软件或专用数字滤波器硬件来实现,或是用专用的或通用的数字信号处理器来实现。
一般来说,滤波器的性能要求往往以频率响应的幅度特性的允许误差来表征。
数字滤波器的频响特性函数
一般为复函数,所以通常表示为:
(4)
其中
称为幅频特性函数;
称为相频函数。
幅频特性表示信号通过该滤波器后各频率成分的衰减情况,而相频特性反映各频率通过滤波器后在时间上的延时情况。
3.FIR滤波器的设计
FIR滤波器的设计方法很多,文中选取通常使用的用窗函数法、波纹逼近法、最小乘方法设计FIR滤波器。
采用不同的方法设计相同的滤波器(低通、高通、带阻、带通滤波器)并进行比较,分析不同设计方法的特点。
3.1FIR数字低通滤波器的设计
分别采用窗函数法(凯泽窗、汉宁窗、汉明窗、布莱克窗窗)、波纹逼近法、最小乘方法对FIR数字低通滤波器进行设计并比较。
3.1.1窗函数法
凯泽窗设计如下:
Fs=48000Hz
Fpass=9500Hz
Fstop=12000Hz
Apass=1dB
Astop=80dB
图1凯泽窗函数法设计101阶FIR数字低通滤波器
汉宁窗、汉明窗与布莱克曼窗设计如下:
Fs=48000Hz
Fc=10800Hz
图2汉宁窗函数法设计101阶FIR数字低通滤波器
图3汉明窗函数法设计101阶FIR数字低通滤波器
图4布莱克曼窗函数法设计101阶FIR数字低通滤波器
比较三种不同窗函数设计的滤波器可以看出:
在相同阶数下,凯泽窗最小阻带衰减最大,但过度带较宽。
3.1.2波纹逼近法
设计如下:
Fs=48000Hz;
Fpass=9500Hz;
Fstop=12000Hz;
Apass=1dB;
Astop=80dB;
Filterorder选择Minimunorder(matlab自动选取滤波器最小阶数)
图5波纹逼近法设计101阶FIR数字低通滤波器
3.1.3最小乘方法
设计如下:
Fs=48000Hz;
Fpass=9500Hz;
Fstop=12000Hz;
Apass=1dB;
Astop=80dB;
Filterorder选择specifyorder:
101
图6最小乘方法设计101阶FIR数字低通滤波器
通过比较窗函数法、波纹逼近法以及最小乘方法对相同低通滤波器的设计可以看出:
窗函数法通带内平稳度高,过渡带较宽,阻带衰减随频率增加而减小,阶数较高;波纹逼近法在通带内有较小波纹,过渡带较宽,阻带内衰减平稳,阶数较高;最小乘方法通带内平稳度高,过渡带较小,阻带衰减随频率减小。
3.2FIR数字高通滤波器设计
分别采用窗函数法(凯泽窗、汉宁窗、汉明窗、布莱克窗窗)、波纹逼近法、最小乘方法对FIR数字高通滤波器进行设计并比较。
3.2.1窗函数法
设计如下:
Fs=48000Hz
Fpass=12000Hz
Fstop=9600Hz
Apass=80dB
Astop=1dB
图7凯泽窗函数法设计102阶FIR数字高通滤波器
汉宁窗、汉明窗与布莱克曼窗设计如下:
Fs=48000Hz
Fc=10800Hz
图8汉宁窗窗函数法设计102阶FIR数字高通滤波器
图9汉明窗函数法设计102阶FIR数字高通滤波器
图10布莱克曼窗窗函数法设计102阶FIR数字高通滤波器
比较三种不同窗函数设计的滤波器可以看出:
在相同阶数下,凯泽窗最小阻带衰减最大,但过度带较宽。
3.2.2波纹逼近法
设计如下:
Fs=48000Hz;
Fpass=12000Hz;
Fstop=9600Hz;
Apass=80dB;
Astop=1dB;
图11波纹逼近法设计56阶FIR数字高通滤波器
3.2.3最小乘方法
设计如下:
Fs=48000Hz
Fpass=12000Hz
Fstop=9600Hz
Apass=80dB
Astop=1dB
图12最小乘方法设计101阶FIR数字高通滤波器
通过比较三种不同方法设计相同高通滤波器可以看出:
窗函数法阻带衰减随频率增加而增加,过渡带较宽,通带平稳性高,阶数较高;波纹逼近法阻带衰减平稳,过渡带较宽,通带内有较小波纹,阶数较低;最小乘方法最小阻带衰减高,过渡带较宽,通带内平稳度高。
3.3FIR带通滤波器设计
分别采用窗函数法(凯泽窗、汉宁窗、汉明窗、布莱克窗窗)、波纹逼近法、最小乘方法对FIR数字带通滤波器进行设计并比较。
3.3.1窗函数法
设计如下:
Fs=48000Hz
Fstop1=8400Hz
Fpass1=9600Hz
Fpass2=12000Hz
Fstop2=14400Hz
Astop1=60dB
Apass=1dB
Astop2=80dB
图13凯泽窗函数法设计101阶FIR数字带通滤波器
汉宁窗、汉明窗与布莱克曼窗设计如下:
Fs=48000Hz
Fc1=8400Hz
Fc2=13200Hz
图14汉宁窗窗函数法设计101阶FIR数字带通滤波器
图15汉明窗窗函数法设计101阶FIR数字带通滤波器
图16布莱克曼窗函数法设计101阶FIR数字带通滤波器
比较三种不同窗函数设计的滤波器可以看出:
在相同阶数下,凯泽窗最小阻带衰减最大,但过度带较宽。
3.3.2波纹逼近法
设计如下:
Fs=48000Hz
Fstop1=7200Hz
Fpass1=9600Hz
Fpass2=12000Hz
Fstop2=14400Hz
Astop1=60dB
Apass=1dB
Astop2=80dB
图17波纹逼近法设计50阶FIR数字带通滤波器
3.3.3最小乘方法
设计如下:
Fs=48000Hz
Fstop1=8400Hz
Fpass1=9600Hz
Fpass2=12000Hz
Fstop2=14400Hz
Wstop1=60dB
Wpass=1dB
Wstop2=80dB
图18最小乘方法设计101阶FIR数字带通滤波器
通过不同方法设计滤波器进行比较得出:
窗函数法阻带衰减随频率变化,过渡带较宽,通带平稳度高;波纹逼近法阻带内平稳,过渡带较宽,通带内有较小波纹,阶数较低;最小乘方法最小阻带衰减高,过渡带较宽,通带内平稳度高。
3.4FIR数字带阻滤波器设计
分别采用窗函数法(凯泽窗、汉宁窗、汉明窗、布莱克窗窗)、波纹逼近法、最小乘方法对FIR数字带阻滤波器进行设计并比较。
3.4.1窗函数法
设计如下:
Fs=48000Hz
Fpass1=8400Hz
Fstop1=9600Hz
Fstop2=12000Hz
Fpass2=14400Hz
Apass1=0.5dB
Astop=60dB
Apass2=1dB
图19凯泽窗函数法设计74阶FIR数字带阻滤波器
汉宁窗、汉明窗与布莱克曼窗设计如下:
Fs=48000Hz
Fc1=8400HzFc2=13200Hz
图20汉宁窗函数法设计74阶FIR数字带阻滤波器
图21汉明窗函数法设计74阶FIR数字带阻滤波器
图22布莱克曼窗函数法设计74阶FIR数字带阻滤波器
比较三种不同窗函数设计的滤波器可以看出:
在相同阶数下,凯泽窗最小阻带衰减最大,但过度带较宽。
3.4.2波纹逼近法
设计如下:
Fs=48000Hz
Fpass1=8400Hz
Fstop1=9600Hz
Fstop2=12000Hz
Fpass2=14400Hz
Apass1=0.5dB
Astop=60dB
Apass2=1dB
图23波纹逼近法设计46阶FIR数字带阻滤波器
3.4.3最小乘方法
设计如下:
Fs=48000Hz
Fpass1=8400Hz
Fstop1=9600Hz
Fstop2=12000Hz
Fpass2=14400Hz
Wpass1=0.5dB
Wstop=60dB
Wpass2=1dB
图24最小乘方法设计50阶FIR数字带阻滤波器
通过几种设计方法的比较可以得出:
窗函数法通带内平稳度高,过渡带较宽,阻带衰减随频率变化,阶数较高;波纹逼近法通带内有较小波纹,过渡带较宽,最小阻带衰减高,阶数低;最小乘方法通带内平稳度高,过渡带较宽,最小阻带衰减高。
综合以上设计得出以下表格:
表一几种不同设计法的特点比较
方法参数
通带内平稳度
过渡带宽度
最小阻带衰减
阶数
凯泽窗
高
较宽
高
高
汉宁窗
高
一般
低
高
汉明窗
高
一般
低
高
布莱克曼窗
高
一般
低
高
波纹逼近
有波纹
一般
不定
低
最小乘方
高
一般
高
高
4.FIR数字滤波器的实例仿真
假设原始信号是x=sin(2*pi*70*t)+2*sin(2*pi*120*t),抽样频率为fs=1000Hz,信号被白噪声污染,实际获得信号是xn=x+randn(size(t)),设计出一个FIR滤波器来恢复出原始信号。
因为白噪声分布于整个频带,所以要在不衰减原信号的前提之下,对整个频带滤波,利用最小二乘法设计出一个多带滤波器。
滤波器设计要求在[65/50075/500](即[0.130.15])段、[115/500125/500](即[0.230.25])段频带内幅度为l,在[060/500](即[00.12])段、[80/500110/500](即[0.160.22])段、[130/5001](即[0.261])段频带内幅为0。
程序设计如下:
t=0:
1/fs:
2;%取2秒的序列
x=sin(2*pi*70*t)+2*sin(2*pi*120*t);%先生成相应信号
xn=x+randn(size(t));%加入噪声
f=[00.120.130.150.160.220.230.250.261];
m=[0011001100];
b=firls(N,f,m);
[h,b]=freqz(b,1);
滤波器幅频特性如图25所示:
图26为滤波信号和原始信号比较:
程序如下:
t=0:
1/fs:
0.75;
x=sin(2*pi*70*t)+2*sin(2*pi*120*t);
xn=x+randn(size(t));
subplot(3,1,1);plot(t,x);%原始信号
subplot(3,1,2);plot(t,xn);%污染信号
b=firls(N,f,m);
xo=filter(b,1,xn);%滤波器对xn进行滤波
subplot(3,1,3);plot(t,xo);
图25滤波器幅频特性
图26滤波后信号比较
总结
本文在matlab环境下采用了窗函数设计法、波纹逼近设计法、最小乘方设计法分别设计了低通、带阻、带通、高通FIR数字滤波器,采用控制变量法比较相同阶数下不同设计方法设计出的滤波器的通带平稳度、阻带最小衰减以及过渡带的宽度,通过对大量的设计仿真进行分析,指出了不同设计方法的特点:
在同样滤波器阶数情况下,窗函数设计法设计方法相对简便,通带内稳定性高,过渡带宽度随窗函数种类变化,其中汉宁窗、汉明窗、布莱克曼窗函数法的过渡带相比凯泽窗较窄,但凯泽窗最小阻带衰减最高;波纹逼近法设计出的滤波器相对其他几种方法通带内不够平稳;最小乘方法相比于其他设计方法误差较低,通带内平稳度较高并且最小阻带衰减较高。
通过分析推广到实际设计中去:
对通带内平稳度要求较高时优先选用窗函数法;对最小阻带衰减要求较高时可优先选择最小乘方法;要求阶数或计算量较低时可优先选择波纹逼近法。
本文还存在可以深入之处,其一,选取的设计方法只是三种最常用的,实际设计中还有很多种方法,选取更多的方法可以得到更加细致的结论;其二,比较时选取的通带平稳度、过渡带宽度、最小阻带衰减与阶数,其实能够体现滤波器性能的还有主瓣宽度、旁瓣峰值等,增加一些基本参数进行比较可以使滤波器设计方法的比较更有说服力;其三,数字滤波器分为FIR与IIR,可以在这基础上用类似方法研究IIR滤波器,得出更加广泛的结论。
参考文献
[1]郑君里.信号与系统[M].北京:
高等教育出版社,2000.
[2]楼顺天.基于MATLAB的系统分析与设计---信号处理[M].西安:
西安电子科技大学出版社,1998.
[3]程卫国.MATLAB5.3应用指南[M].北京:
人民邮电出版社,1999.
[4]钟麟.MATLAB仿真技术与应用教程[M].北京:
国防工业出版社,2004.
[5]刘敏.MATLAB通信仿真与应用[M].北京:
国防工业出版社,2001.
[6]丁玉美.数字信号处理[M].西安:
西安电子科技大学出版社,