《最新FIR高通滤波器的设计.doc》由会员分享,可在线阅读,更多相关《最新FIR高通滤波器的设计.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateFIR高通滤波器的设计课程设计任务书课程设计任务书学生姓名: 专业班级: 电信0902班 指导教师: 陈德军 工作单位: 信息工程学院 题 目:FIR高通滤波器的设计初始条件: 具备数字信号处理的理论知识;具备Matlab编程能力;熟悉高通滤波器的设计原理;提供编程所需要的计算机一台要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、设
2、计阻带截止频率为200Hz的FIR数字高通滤波器2、独立编写程序实现3、完成符合学校要求的设计说明书时间安排:一周,其中3天程序设计,2天程序调试指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目 录摘 要I1 MATLAB基础知识的介绍11.1 MATLAB的介绍11.2 基本功能12 FIR滤波器简介23 高通滤波器及其应用33.1 高通滤波器的定义33.2 高通滤波器的应用33.3 高通滤波的时域分析33.4 高通滤波器频域分析44 窗函数的相关知识54.1 窗函数的基本概念54.2 窗函数的设计原理64.3 窗函数的设计步骤65 FIR数字滤波器程序设计与仿真75.1
3、窗函数程序设计75.2 仿真结果图96 心得体会11参考文献12摘 要数字滤波器是一个离散时间系统(按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置)。应用数字滤波器处理模拟信号时,首先须对输入模拟信号进行限带、抽样和模数转换。数字滤波器有低通、高通、带通、带阻和全通等类型。它可以是时不变的或时变的、因果的或非因果的、线性的或非线性的。应用最广的是线性、时不变数字滤波器,以及FIR滤波器。数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。数字滤波器在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。 关键字:FIR、高
4、通、滤波器1 MATLAB基础知识的介绍1.1 MATLAB的介绍MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。1.2 基本功能MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科
5、学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也
6、吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。2 FIR滤波器简介FIR滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。有限长单位冲激响应(FIR)滤波器有以下特点: (1) 系统的单位冲激响应h (n)在有限个n值处不为零;
7、 (2) 系统函数H(z)在|z|0处收敛,极点全部在z = 0处(因果系统); (3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。目前,FIR滤波器的硬件实现有以下几种方式: (1)数字集成电路FIR滤波器一种是使用单片通用数字滤波器集成电路,这种电路使用简单,但是由于字长和阶数的规格较少,不易完全满足实际需要。虽然可采用多片扩展来满足要求,但会增加体积和功耗,因而在实际应用中受到限制。 (2)DSP芯片FIR滤波器另一种是使用DSP芯片。DSP芯片有专用的数字信号处理函数可调用,实现FIR滤波器相对简单,但是由于程序顺序执行,速度
8、受到限制。而且,就是同一公司的不同系统的DSP芯片,其编程指令也会有所不同,开发周期较长。 (3)可编程FIR滤波器还有一种是使用可编程逻辑器件,FPGACPLD。FPGA有着规整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。 3 高通滤波器及其应用3.1 高通滤波器的定义高通滤波器是容许高频信号通过、但减弱(或减少)频率低于截止频率信号通过的滤波器。对于不同滤波器而言,每个频率的信号的减弱程度不同。它有时被称为低频剪切滤波器;在音频应用中也使用低音消除滤波器或者噪声滤波器。高通滤波器与低
9、通滤波器特性恰恰相反。3.2 高通滤波器的应用这样的滤波器能够把高频率的声音引导至专用高音喇叭(tweeter),并阻止可能干擾或者损害喇叭的低音信号。使用线圈而不是电容的低通滤波器也可以同时把低频信号引导至低音喇叭(woofer)。参见音频桥(en:audio crossover)。高通和低通滤波器也用于数字图像处理中在频域中进行变换。3.3 高通滤波的时域分析在时域,信号经过系统的响应y (n)体现为激励x(n)跟系统单位抽样响应h(n)的卷积和y(n)=(n)h(n)=N1m=0h(m)x(n-m)223 。对于长度为N 的FIR系统, h(n)可以看成一个长度为N 点的固定窗口,而x(
10、n)则看成一个队列以齐步走的方式穿过h(n)窗口,每走一步,位于窗口中的x(n)部分的点跟h(n)的对应点的值相乘(即加权)再求和,所得结果构成此时系统的响应值y(n), x(n)队列每走一步就得到一个响应值y(n),即y(n)是h(n)对位于其窗口中的x(n)的加权求和。高通滤波要求h(n)窗口具有波形锐化作用,即利用h(n)窗口加权和使得变化快的(即高频)正弦分量保留(理想高通)或衰减幅度小(实际高通) ,而变化缓慢(即低频)的正弦分量正负抵消(理想高通)或衰减幅度大(实际高通) 。设 其中N 必须取奇数,2.1.1其中: fs = 11kHz, n为整数,即x ( n)由100Hz的x1
11、(n)和1kHz的x2(n)两种频率的信号组成。高通滤波的目的就是要尽可能地去掉x(n)中的低频分量x1(n) ,同时尽可能地保留x(n)中的高频分量x2(n)。x(n)跟h(n)卷积结果如图1所示,从图1可看出,响应y(n)中几乎只剩下右移了(N-1)/2=5个样值点的1kHz的信号x2(n) 。3.4 高通滤波器频域分析在频域,信号经过系统的响应y(n)的频谱Y(ej)体现为激励x(n)的频谱X (ej)跟系统单位抽样响应h(n)的频谱H(ej)(即系统的频谱)的乘积Y(ej)=|H(ej)|X(ej)|ejH+x,即响应的频谱Y(ej)的幅值由系统频谱H(ej)的幅值对激励频谱X(ej)
12、的幅值相乘(加权)得到,响应的频谱Y(ej)的幅角由系统的频谱H(ej)的幅角跟激励频谱X(ej)的幅角相加(移相)得到122 。高通滤波要求系统幅度函数|H(jf)|对需要保留的高频信号频谱加权权重较大(理想时为1) ,对需要滤除的低频信号频谱加权权重较小(理想时为0) 。4 窗函数的相关知识4.1 窗函数的基本概念在实际进行数字信号处理时,往往需要把信号的观察时间限制在一定的时间间隔内,只需要选择一段时间信号对其进行分析。这样,取用有限个数据,即将信号数据截断的过程,就等于将信号进行加窗函数操作。而这样操作以后,常常会发生频谱分量从其正常频谱扩展开来的现象,即所谓的“频谱泄漏”。当进行离散
13、傅立叶变换时,时域中的截断是必需的,因此泄漏效应也是离散傅立叶变换所固有的,必须进行抑制。而要对频谱泄漏进行抑制,可以通过窗函数加权抑制DFT的等效滤波器的振幅特性的副瓣,或用窗函数加权使有限长度的输入信号周期延拓后在边界上尽量减少不连续程度的方法实现。而在后面的FIR滤波器的设计中,为获得有限长单位取样响应,需要用窗函数截断无限长单位取样响应序列。另外,在功率谱估计中也要遇到窗函数加权问题。窗函数的基本概念。设x(n)是一个长序列,w(n)是长度为N的窗函数,用w(n)截断x(n),得到N点序列xn(n),即xn(n) = x(n) w(n)在频域上则有由此可见,窗函数w(n)不仅仅会影响原
14、信号x(n)在时域上的波形,而且也会影响到频域内的形状。4.2 窗函数的设计原理窗函数设计法的基本原理是用有限长单位脉冲响应序列逼近。由于往往是无限长序列,而且是非因果的,所以用窗函数将截断,并进行加权处理,得到:就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数为式中,N为所选窗函数的长度。用窗函数法设计的滤波器性能取决于窗函数的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。4.3 窗函数的设计步骤窗函数法设计线性相位FIR滤波器可以按如下步骤:1. 确定数字滤波器的性质要求,确定各临界频率和滤波器单位脉冲响应长
15、度N。2. 根据性能要求和N值,合理地选择单位脉冲响应h(n)有奇偶对称性,从而确定理想频率响应h(e)的幅频特性和相位特性。3. 用傅里叶反变换公式,求得理想单位脉冲响应H(n)。4. 选择适当的窗函数W(n),求得所设计的FIR滤波器单位脉冲响应。5. 用傅里叶变换求得其频率响应H(e),分析他的频率特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述过程,直至得到满意结果。5 FIR数字滤波器程序设计与仿真5.1 窗函数程序设计f1=100;f2=700;%待滤波正弦信号频率fs=2000;%采样频率m=(0.3*f1)/(fs/2);%定义过度带宽M=round(8/m);%定义
16、窗函数的长度N=M-1;%定义滤波器的阶数window=hanning(M);b=fir1(N,0.2,high,window);%使用fir1函数设计滤波器%输入的参数分别是滤波器的阶数和截止频率figure(1)h,f=freqz(b,1,512);%滤波器的幅频特性图%H,W=freqz(B,A,N)当N是一个整数时函数返回N点的频率向量和幅频响应向量plot(f*fs/(2*pi),20*log10(abs(h)%参数分别是频率与幅值xlabel(频率/赫兹);ylabel(增益/分贝);title(滤波器的增益响应);figure(2)subplot(211)t=0:1/fs:0.2
17、5;%定义时间范围和步长s=sin(2*pi*f1*t)+sin(2*pi*f2*t);%滤波前信号plot(t,s);%滤波前的信号图像xlabel(时间/秒);ylabel(幅度);title(信号滤波前时域图);subplot(212)Fs=fft(s,512);%将信号变换到频域AFs=abs(Fs);%信号频域图的幅值f=(0:255)*fs/512;%频率采样plot(f,AFs(1:256);%滤波前的信号频域图xlabel(频率/赫兹);ylabel(幅度);title(信号滤波前频域图);figure(3)sf=filter(b,1,s);%使用filter函数对信号进行滤波
18、%输入的参数分别为滤波器系统函数的分子和分母多项式系数向量和待滤波信号输入subplot(211)plot(t,sf)%滤波后的信号图像xlabel(时间/秒);ylabel(幅度);title(信号滤波后时域图);axis(0.2 0.25 -2 2);%限定图像坐标范围subplot(212)Fsf=fft(sf,512);%滤波后的信号频域图AFsf=abs(Fsf);%信号频域图的幅值f=(0:255)*fs/512;%频率采样plot(f,AFsf(1:256)%滤波后的信号频域图xlabel(频率/赫兹);ylabel(幅度);title(信号滤波后频域图);5.2 仿真结果图6
19、心得体会本次课程设计通过一个设计实例,向我们介绍了利用MATLAB实现 FIR滤波器设计与滤波的三种方法,从仿真结果可以看出它们均可以达到技术指标要求,而且方法简单、快捷,大大减轻了工作量。我在滤波器的设计工作完成后,借助了MATLAB的export操作导出所设计滤波器的系统函数H(z)。并且由于MATLAB具有强大的接口功能,仿真后的结果可以很方便的移植到 DSP、CPLD或FPGA等器件中。但是在实际应用中,只需按要求修改滤波器参数,并对程序作较少的改动,即可实现不同截止频率的FIR滤波器,实用性较强。我在编写程序过程中犯了不少低级错误,这很不应该。 还有一些重大错误在同学的帮助下,我都找了出来并且改正正确了。这次课程设计让我获益颇多。参考文献1 程佩青. 数字信号处理(第2版)M.北京:清华大学出版社,20032 林彦杰.基于MATLAB的FIR数字滤波器的设计J.南京邮电学院电子工程系,江苏省南京市 20033 楼顺天,李博菡. 基于MATLAB的系统分析与设计信号处理M.西安: 西安电子科技大学出版社,20014 陈怀琛. MATLAB及在电子信息课程中的应用M.北京:电子工业出版社,20025 潘永才,王子旭,游治. 数字FIR滤波器的Matlab设计J.半导体技术, 2001-