FIR数字滤波器.docx
《FIR数字滤波器.docx》由会员分享,可在线阅读,更多相关《FIR数字滤波器.docx(16页珍藏版)》请在冰豆网上搜索。
FIR数字滤波器
FIR(FiniteImpulseResponse)滤波器:
有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
工作原理编辑
FIR滤波器工作原理[1]
在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必须满足奈奎斯特定理,一般取信号频率上限的4-5倍做为采样频率;一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。
FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。
特点编辑
有限长单位冲激响应(FIR)滤波器有以下特点:
(1)系统的单位冲激响应h(n)在有限个n值处不为零
(2)系统函数H(z)在|z|>0处收敛,极点全部在z=0处(因果系统)
(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。
设FIR滤波器的单位冲激响应h(n)为一个N点序列,0≤n≤N—1,则滤波器的系统函数为
H(z)=∑h(n)*z^-n
就是说,它有(N—1)阶极点在z=0处,有(N—1)个零点位于有限z平面的任何位置。
数字滤波器概述
(见手抄笔记)补充
所谓数字滤波器,是指输入输出均为数字信号,通过一定的运算关系,改变输入信号中所含频率成分的相对比例,或则滤除某些频率成分的器件[3]。
数字滤波器具有稳定性高、精度高、灵活性大等突出优点。
对于数字滤波器而言,若系统函数为H(z),其脉冲响应为h(n),输入时间序列为x(n),则它们在时域内的关系式如下:
(1-1)
在Z域内,输入和输出存在如下关系:
(1-2)
式中,X(z)、Y(z)分别为x(n)和y(n)的Z变换。
在频域内,输入和输出则存在如下关系:
(1-3)
式中,
是数字滤波器的频率特性;
、
分别为x(n)和y(n)的频谱,而
为数字角频率。
FIR数字滤波器设计
摘要数字滤波器的输入输出均为数字信号,信号通过数字滤波器后,可以改变频率成分的相对比例或滤除某些频率成分。
数字滤波器可以分为IIR数字滤波器和FIR数字滤波器。
文中只介绍FIR数字滤波器的设计,可以根据所给定的频率特性直接设计FIR数字滤波器。
FIR数字滤波器在保证幅度特性满足要求的同时,能够做到严格的线性特性。
本文采用了窗函数法、频率采样法以及基于firls函数和remez函数的最优化方法设计FIR滤波器。
在文中对FIR滤波器进行了详细的理论分析,并且对应于每种方法都给出了设计实例。
通过编写MATLAB语言程序,运行程序,得到幅频和相频特性图。
对于窗函数和firls函数设计的滤波器,还通过建立Simulink系统模块进行仿真,观察滤波器滤波情况。
关键词窗函数法;频率采样法;最优化方法;仿真
DesignofFIRDigitalFilter
AbstractFirstly,thepapergivesabriefdescriptionofdigitalfilterandMATLABlanguage.ThedigitalfiltercanbedividedintoIIRdigitalfilterandFIRdigitalfilter.ThepaperonlygivethedigitalfilterofFIR,asfortheFIRfilter,wecandesignitdirectlybasedonthegivingfrequency,inthepaperitusesthedesignofthewindowfunction,frequencysamplingmethodandoptimizationmethod.Asforallfilterdesignmethodabove,thepaperalldescribesindetail.Andforeachmethod,thepaperalsogivessomeexamples.Atlast,throughthepreparationoftherelevantproceduresinMATLABsimulationsoftware,operatingproceduresandrecords,observationoffrequencyandphaseofplanstoFIRdigitalfilterintheMATLABsoftwareintheimplementationprocess.
引言
随着信息时代与数字技术的发展,数字信号处理己逐渐发展成为当今极其重要的学科与技术领域之一。
数字信号处理在通信、语音、图像、自动控制雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
在数字信号处理的基本方法中,通常会涉及到变换、滤波、频谱分析、调制解调和编码解码等处理。
其中,滤波是应用非常广泛的一个环节,数字滤波器的相关理论也一直都是人们研究的重点之一。
数字滤波器是数字信号处理的重要基础,在对信号的滤波、检测及参数的估计等信号应用中,数字滤波器是使用最为广泛的一种线性系统。
数字滤波器根据其单位冲击响应函数的时域特性可分为两类:
无限冲击响应(IIR)数字滤波器和有限冲击响应(FIR)数字滤波器。
与IIR数字滤波器相比,FIR数字滤波器的实现是非递归的,稳定性好,精度高;更重要的是FIR数字滤波器在满足幅度响应要求的同时,可以获得严格的线性相位。
因此,它在高保真的信号处理中,如数字音频、图像处理、数据传输和生物医学等领域得到广泛应用。
摘要
FIR数字滤波器具有灵活、稳定、计算延时小和线性相位的特点,可利用它对于高保真、实时的信号进行处理非常重要。
使用传统方法设计滤波器不仅过程繁琐,而且在设计高阶滤波器时工作量很大。
基于窗函数法利用MATLAB可以快速有效的实现FIR数字滤波器的设计与仿真。
数字滤波器作为数字信号处理的基本组成构件,其设计在数字信号处理中有着重要的意义。
本文根据FIR数字滤波器设计的基本原理,提出了基于MATLAB的FIR数字滤波器的窗函数设计法。
文中给出了设计实例,仿真结果表明设计的各项性能指标均达到了指定要求,设计过程简便易行。
最大的优点就是在满足幅频特性的同时,还可以获得严格的线性相位特性,这使它在语音处理、图像处理等要求高保真的数字信号处理中显得十分重要。
数字滤波器设计是数字信号处理中一个非常重要的环节,根据其冲激响应函数的时域特性,可分为无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
随着MATLAB软件的不断完善,将其应用于设计数字滤波器不仅可以从繁重的运算与推导过程中解脱出来,而且还可以使设计达到最优化。
其主要有三种方法:
窗函数法,频率抽样法和等波纹最佳一致逼近法。
本文基于窗函数法讨论FIR数字滤波器的设计与实现。
FIR数字滤波器设计1.1FIR数字滤波器FIR数字滤波器是一种非递归系统,其冲激响应H(Z)是有限长序列,即。
其冲激响应具有对称特
性,即h(n)=±h(N-1-n)。
故FIR数字滤波器可实现严格的线性相位。
FIR数字滤波器的极点都位于原点,采用非递归结构,不论在理论上还是在实际的有限精度运算中都不存在稳定性问题,运算误差也较小。
此外,FIR滤波器可以采用快速傅立叶变换算法,运算速度可以快得多。
1.2基于窗函数法的FIR数字滤波器设计FIR滤波器的设计就是将一个无限长冲激响应序列截短,得到一个有限长序列,并用它去逼近一个理想的低通滤波器。
在设计时首先要构造希望逼近的频率响应Hd(ejω),其次求解hd(n),第三加窗得到FIR滤波器的单位脉冲响应h(n)=hd(n)×w(n),最后验算技术指标是否满足要求,即计算设计出的滤波器频率响应。
其中w(n)为窗函数。
理想低通滤波器经加窗处理后,由窗函数频谱的主瓣引起滤波器的频率响应在不连续点处出现过渡带,一般来说,过渡带的宽度与N成反比。
由窗函数频谱的旁瓣引起的滤波器在通带和阻带内产生波纹,这种现象称为吉布斯现象,且无法通过改变N的取值消除吉布斯现象。
因此,在利用窗函数法设计FIR滤波器时,我们希望找到更好的设计方法,使得能量尽可能集中于主瓣,旁瓣高度尽可能小,主瓣宽度尽量窄,从而减少通带和阻带中的波纹并获得尽可能陡的过渡带。
常用的窗函数有矩形窗、汉宁窗、哈明窗、布莱克曼窗和凯泽窗。
设计时选用不同窗函数,会得到不同的通带、过渡带和阻滞衰减特性。
2利用MATLAB实现FIR数字滤波器设计
基于窗函数法设计一个FIR高通数字滤波器,技术指标:
通带载频Ωp=0.67πrad,通带衰减Ap=1dB,阻带截频Ωs=0.53πrad,阻带衰减As=60dB。
2.1基于矩形窗FIR数字滤波器的MATLAB实现第一步:
双击打开MATLAB软件,输入如下程序:
Wp=0.67*pi;Ws=0.53*pi;Ap=1;As=60;
N=ceil(1.8*pi/(Wp-Ws));
N=mod(N+1,2)+N;
fprintf('N=%.0f\n',N);
w=boxcar(N)';
Wc=(Wp+Ws)/2;
n=0:
N-1;
hd=-(Wc/pi)*sinc(Wc*(n-0.5*(N-1))/pi);
hd(0.5*(N-1)+1)=hd(0.5*(N-1)+1)+1;
h=hd.*w;
subplot(121);
stem(n,h);
omega=linspace(0,pi,512);
mag=freqz(h,[1],omega);
magdb=20*log10(abs(mag));
subplot(122);
plot(omega/pi,magdb);
第二步:
调试并运行程序,即可得到结果及仿真图形,如图1所示。
输出结果:
N=13
(差图)
2.2基于其他窗函数FIR数字滤波器的MATLAB实现2.2.1基于汉宁窗的设计w=hanning(N)';
输出结果:
N=45。
仿真图形如图2所示。
(差仿真图)
2.2.2基于哈明窗的设计w=hamming(N)';输出结果:
N=51。
仿真图形如图3所示。
(差图)
2.2.3基于布莱克曼窗的设计w=blackman(N)';输出结果:
N=83。
仿真图形如图4所示。
(差图)
3结语
由以上设计可以看出,在设计要求完全相同的前提下,矩形窗长度最小。
其次是汉宁窗、哈明窗,布莱克曼窗长度最大。
矩形窗的过渡带最窄,但利用它设计FIR数字滤波器的阻滞衰减最小。
利用布莱克曼窗设计出的FIR数字滤波器的阻滞衰减最大,但其过渡带也最宽。
显然,提高FIR数字滤波器的阻滞衰减是以增加过渡带宽度为代价的。
通过本文的分析以及从MATLAB的仿真结果来看,在FIR数字滤波器的设计中,各种窗体各有优劣,故窗函数的选择在实际设计中是非常重要的。
最优化方法设计FIR数字滤波器
MATLAB7.0信号处理工具箱提供了通用的工具函数firls和remez,采用不同的优化方法可以设计最优滤波器和多频带滤波器。
firls是fir1和fir2函数的扩展,其基本设计准则是利用最小二乘法使期望的频率响应和实际的频率响应之间的整体误差最小。
Remez函数则利用Parks-McClellan算法设计线性相位FIR滤波器。
该算法能使期望频率响应和实际频率响应之间的最大误差最小。
Firls函数设计的滤波器在频率响应上出现等波纹,因此也叫等波纹滤波器。
函数firls、remez调用的语法规则相同。
(1)firls。
其调用格式为
Ⅰ.b=firls(n,f,a)
Ⅱ.b=firls(n,f,a,w)
Ⅲ.b=firls(n,f,a,’ftype’)
Ⅳ.b=firls(n,f,a,w,’ftype’)
该函数用于设计n阶FIR滤波器,其幅频特性由f和a向量确定,f是频率点向量,其范围为0~1,是递增向量;a是指定频率点的幅度响应,与f必须同长度;b为函数返回的滤波器系数,长度为n+1,且具有偶对称关系:
b(k)=-b(n+2-k),k=1,2,…,n+1
b=firls(n,f,a,w)则使用权系数w给误差加权。
b=firls(n,f,a,w,’ftype’)调用形式中,参数’ftype’用于指定所设计的滤波器类型,ftype=Hilbert,为奇对称的线性相位滤波器,返回的滤波器系数满足b(k)=-b(n+2-k),k=1,2,…,n+1;ftype=differentiator,则采用特殊加权技术,生成奇对称的线性相位滤波器,使低频段误差大大小于高频段误差。
(2)函数remez的基本调用格式为
b=remez(n,f,a)
其中各项意义同函数firls所述。
设计实例:
分别使用函数firls和remez函数设计20阶带通滤波器,阻带频率为ws1=0.3*
ws2=0.7*
通带频率为wp1=0.4*
wp2=0.6*
并画出幅频特性曲线。
1.程序如下所示:
f=[00.30.40.60.71];
m=[001100];
n=20;
b=firls(n,f,m);%firls函数设计FIR数字滤波器
[h,w]=freqz(b);
bb=remez(n,f,m);%remez函数设计FIR数字滤波器
[hh,w]=freqz(bb);
axes('position',[0.20.20.50.5]);
plot(w/pi,abs(h),'b:
',w/pi,abs(hh),'r-');
xlabel('frequency');
ylabel('magnitude');
gridon;
实验的幅频特性曲线如下:
2.用Simulink仿真对用firls函数设计的带通滤波器进行滤波:
仿真模块如下:
输入信号:
s(t)=sin(20πt)+sin(50πt)+sin(90πt)
数字滤波器参数设置:
已知滤波器的阶数n=20。
本例中,首先在FilterType中选择bandpass;在DesignMethod选项中选择FIRleast-squares;指定FilterOrder项中的Specifyorder为20;采样频率Fs=100Hz,Fstop1=15HZ,Fpass1=20HZ,
Fpass2=30HZ,Fstop2=35HZ。
设置完以后点击窗口下方的DesignFilter,在窗口上方就会看到所设计滤波器的幅频响应曲线。
。
设计界面如下图所示:
信号源参数设置:
三个信号源的频率分别是10Hz、25Hz、45Hz:
运行仿真,得波形如下图所示:
(1)10HZ信号波形
(2)25HZ信号波形(3)45HZ信号波形
(4)滤波前波形(5)滤波后波形
由以上波形可知,10Hz、25Hz、45Hz叠加后通过通频带为20Hz~30Hz的FIR带通滤波器,输出与25Hz信号相似,低频和高频部分被阻隔。
数字滤波器是一种用来过滤时间离散信号的数字系统,它是通过对抽样数据进行数学处理来达到频域滤波的目的。
数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现。
用软件来实现数字滤波器优点是:
随着滤波器参数的改变,很容易改变滤波器的性能。
FIR滤波器的设计,可以高级语言(如Fortran、C语言)来实现,目前有许多现成的高级语言FIR滤波器设计程序。
在此,笔者使用MATLAB中的交互式的信号处理工具SPTool更方便地设计FIR滤波器,直接求取了滤波器的系数。
FIR滤波器简介
有限冲激响应(FIR)滤波器的基本结构是一个分节的延时线,把每一节
的输出加权累加,得到滤波器的输出。
数学上表示为:
结构如图1所示,用一条均匀间隔抽头的延迟线上对抽头信号进行加权求和构成。
根据上式,可以看出FIR数字滤波器涉及到大量的卷积运算,使用常规硬件设计的基本部件包括延迟器、乘法器和加法器,实现时会占用大量的资
源。
用软件来实现时,它只是一段线性卷积程序。
软件实现的优点是:
系统函数具有可变性,仅信赖于算法结构,并且易于获得较理想的滤波性能。
所以软件滤波在滤波器的使用中起到了越来越重要的作用。
(见手抄)
图1FIR数字滤波器直接实现形式
FIR滤波器是有限长单位冲激响应滤波器,在结构上是非递归型的,FIR滤波器具有以下的优点:
(1)可以在幅度特性随意设计的同时,保证精确、严格的线性相位;
(2)由于FIR滤波器的单位脉冲响应h(n)是有限长序列,因此FIR滤波器没有不稳定的问题;
(3)由于FIR滤波器一般为非递归结构,因此在有限精度运算下,不会出现递归结构中极性震荡等不稳定现象,误差较小。
FIR滤波器的缺点在于:
对于相同的设计指标,FIR滤波器所要求的阶数比IIR滤波器高2~5倍,信号的延迟偏大。
考虑到用高性能的DSP或FPGA来实现,由于其处理速度快,此缺点是可以避免的。
摘要:
数字滤波器是一种具有选择并区分不同频率功能的电路,是在时域内过滤离散信号的数字系统。
采用的是窗函数法。
研究的重点目的是依据FIR滤波器的特性,分析了FIR滤波器的窗函数设计方法的介绍和选择使用,并利用MATLAB信号处理工具箱来实现验证FIR DF程序的设计。
给出了详细的设计理论和具体步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的性能,实验证明该滤波器达到了预期的滤波功能。
关键词:
MATLAB;DF;FIR;窗函数
数字滤波器的基理是通过对经过抽样后的信号进行数学算法的处理,来达到在频域上滤除不希望波形的目的。
按照数字滤波器的单位冲激响应函数在时域上的特性DF可分为两大类,即无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
与有限冲激滤波器相比,FIR的实现是非递归的,没有反馈回路,其时域冲激响应长度是有限的,同时,FIR的系统函数只有零点和在原点处的极点,所以FIR系统具有永久的稳定性;除此之外,FIR滤波器在满足任意设定频响要求的同时,还可以通过指定其频响而获得严格的线性相位特性。
因此,凭借其信号处理中失真度小的数字优势,广泛应用于数据传输、音频数字、
图像处理、生物医学、军事雷达等领域。
FIR滤波器的窗函数设计的理论分析
FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。
窗函数设计法的基本原理是用一定宽度的某窗函数对hd(n)予以截短来得到有限长度的冲激响应序列h(n),目前随着信号处理技术的发展,窗函数的种类已经有几十种之多,例如韩宁窗,汉明窗,布莱克曼窗等,这些窗函数因其3DB带宽、最大边瓣峰值和边瓣谱峰渐近衰减速度等指标的不同而呈现出不同的特性。
本设计使用Kaiser窗。
无论是韩宁窗,抑或是使用汉明、布莱克曼窗,其函数都是为了达到较好的旁瓣抑制而牺牲了主瓣窄、过滤性强
—35—
中国科技核心期刊
的优势,相比之下,矩形窗的主瓣宽度很好却无优良的旁瓣衰减。
Kaiser窗之所以优于上述窗函数,是因为该窗函数可以通过自由调节β来调节零阶贝塞尔函数而对主瓣宽度和旁瓣衰减的成分比例进行目的性的设置。
正是由于它明确了主旁瓣的交换关系,凯瑟窗才得以拥有别的窗函数所不具有的灵活性与选择性。
对于特定长度的Kaiser窗,只要给定其β值,那么它的旁瓣高度也随之固定了。
Kaiser窗函数由J.F.Kaiser提出的,其表达式为:
FIR数字滤波器的特性分析有限长单位冲激响应(FIR)滤波器的系统函数只有零点,除原点外,没有极点,因而FIR滤波器总是稳定的。
如果它的有限长单位冲激响应是非因果的,总能够通过适当地移位得到因果的单位冲激响应,所以FIR滤波器不存在稳定性和是否可实现的问题。
它的另一个突出的优点是在满足一定的对称条件下,可以实现严格的线性相位,这一点在IIR数字滤波器中是难做到的。
由于线性相位特性在工程实际中具有非常重要的意义,如在数据通信、图像处理等应用领域,往往要求信号在传输和处理过程中不能有明显的相位失真,因而线性相位的FIR滤波器得到了广泛应用。
FIR数字滤波器的MATLAB设计示例MATLAB是一套用于科学计算的可视化、高性能语言与软件环境,它集数值分析、矩阵运算、信号处理与图像显示于一体,构成了界面友好的用户环境。
它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,汇集了大量的各种算法的函数,使各种研究时间大大节省。
在设计数字滤波器时,常采用MATLAB来进行辅助设计。
利用MATLAB作为FIR数字滤波器设计的辅助工具,调用其信号处理工具箱的内部函数使FIR数字滤波器的设计变得简单,易实现。
利用MATLAB的仿真功能对所设计的滤波器进行仿真可以提高设计的效率。
数字滤波器(digitalfilter)是由数字乘法器、加法器和延时单元组成的一种装置[1],在在通信、图像、语音、雷达等许多领域都有着十分广泛的应用。
MATLAB是第四代计算机语言,是目前公认的国际上最流行的科学与工程计算的软件工具。
强大的设计功能是MATLAB在滤波器设计更方便快捷[2]。
按所通过信号的频段分为低通、高通、带通和带阻滤波器四种,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器两种[1]。
由于MATLAB具有强大运算功能,所以MATLAB的数字滤波器设计法可以快速有效的设计由软件组成的常规的上述数字滤波器,其特点是设计方便、快捷,极大的减轻了工作量[2,3]。
SIMULINK是MATLAB提供的实现动态系统建模和仿真的一个软件包,它让用户把精力从编程转向模型的构造,为用户省去了许多重复的代码编写工作.SIMULINK的每个模块对用户而言都是透明的,用户只需知道模块的输入、输出以及模块的功能,而不必管模块内部是怎么实现的,于是用户需要做的就是如何利用这些模块来建立模型以完成仿真任务[2].本文主要讨论将SIMULINK仿真工具应用到《数字信号处理》课堂教学中,利用SIMU-LINK提供的信号处理工具箱设计仿真实验,以语音、图形等直观表现形式向同学们讲授复杂的理论知识,达到深入浅出的目的.