1、燕山大学课程设计说明书燕山大学课 程 设 计 说 明 书 题目:FIR低通滤波器加窗效应分析 电气工程学院课程设计任务书课程名称: 数字信号处理课程设计 基层教学单位:仪器科学与工程系 指导教师: 学号学生姓名(专业)班级 09级精仪2班设计题目8、 FIR低通滤波器加窗效应分析设计技术参数设计一FIR低通滤波器,所希望的频率响应为在之间为1,在之间为0,对h(n)加窗截断,窗口长度分别取M=10,20,40。设计要求观测不同窗口及不同窗口长度下信号幅频响应的特点(boxcar等,fir1)参考资料数字信号处理方面资料MATLAB方面资料周次前半周后半周应完成内容收集消化资料、学习MATLAB
2、软件,进行相关参数计算编写仿真程序、调试指导教师签字基层教学单位主任签字说明:1、此表一式四份,系、指导教师、学生各一份,报送院教务科一份。 2、学生那份任务书要求装订到课程设计报告前面。 电气工程学院 教务科一、引言 目前,数字基带传输已广泛地应用于利用对称电缆构成的近程数据通信系统之中。随着数字通信技术的发展,基带传输方式不仅可以用于低速数据传输,而且也可以用于高速数据传输。然而数字基带传输也同样不可避免地要产生由码间串扰造成的误码现象。为了消除码间串扰,在时域上,基带传输系统的冲激响应波形h(t)要在本码元的抽样时刻上有最大值,并在其它码元的抽样时刻上均为0,也就是基带传输系统在频域上要
3、满足奈奎斯特第一准则。满足奈奎斯特第一准则的H(w)有很多种,首先是理想低通型,理想低通传输特性虽然可满足基带系统的极限传输速率和极限频带利用率,但这种特性在物理上很难实现,并且理论特性冲激响应的尾巴衰减振荡幅度较大,抽样时刻稍有偏差就会出现严重地码间串扰。为了解决理想低通特性存在的问题,可采用升余弦滚降特性的系统,以使理想低通滤波器的边缘缓慢下降,并使振幅特性在滚降段中心频率处呈奇对称,从而保证满足奈奎斯特第一准则。这种系统可减小码间串扰和位定时误差。 由于FIR数字滤波器可实现对升余弦滚降特性的近似,故本文经过FIR数字滤波器设计来对各种窗函数进行选择,并通过窗函数法实现对升余弦特性低通滤
4、波器的设计,同时用MATIAB来仿真实现。二、摘要 数字滤波技术是数字信号处理的一个重要组成部分,滤波器的设计是信号处理的核心问题之一。根据FIR滤波器的原理,提出了FIR滤波器的窗函数设计法,并对常用的几种窗函数进行了比较。给出了在MATLAB环境下,用窗函数法设计FIR滤波器的过程和设计实例。仿真结果表明,设计的FIR滤波器的各项性能指标均达到了指定要求,设计过程简便易行。该方法为快速、高效地设计FIR滤波器提供了一个可靠而有效的途径。分析了FIR数字滤波器的基本原理,在MATLAB环境下利用窗函数设计FIR滤波器,实现了FIR低通滤波器的设计仿真。将设计的符合要求的滤波器在TI公司DSP
5、 上实现。 通过实验结果表明FIR滤波器准确度高、稳定性好,可以有效的滤除干扰信号,设计结果满足性能指标要求。数字滤波器的应用十分广泛,运行MATLAB语言,能很容易地设计出具有严格要求(如线性相位等)的滤波器。用定点DSP实现滤波器械要考虑DSP的定标、误差、循环寻址等几个关键问题。文中实例是为了表明,可方便地用DSP实现模拟信号的实时滤波处理,所采用的采样频率并不高。如果DSP采用更高的时钟,它的处理速度将更快,将能够满足更高采样率的数字信号的实时滤波处理。关键字:DSP FIR 滤波器 MATLAB 仿真三、FIR 数字滤波器的基本原理3.1关于FIR滤波器设h ( n) ( n = 0
6、, 1, 2 N - 1)为滤波器的冲激响应,输入信号为x ( n) ,则F IR 滤波器就是要实现下列差分方程: 式(1)就是FIR 滤波器的差分方程。F IR 滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。它的单位脉冲响应h ( n)是一个有限长序列。由上面的方程可见, F IR 滤波算法实际上是一种乘法累加运算,它不断地输入样本x ( n) ,经延时( Z 3 /1)做乘法累加,再输出滤波结果y(n)1,2,3 。对式(1)进行Z 变换,整理后可得FIR 滤波器的传递函数为: 由式(2)可以看出, FIR 滤波器的一般结构如图1 所示。 FIR数字滤波器的设计方法主要有窗函
7、数法和频率抽样设计法,其中窗函数法是基本而有效的设计方法。3.2 FIR滤波器的优点在数字信号处理应用中,数字滤波是各种DSP应用中的基本算法,在数字信号处理中有很重要的地位,数字滤波器十分重要并己获得广泛的应用。所谓数字滤波器,是指其输入、输出均为数字信号,通过一定的运算关系改变输入信号所含频率成分的相对比例或滤出掉某些频率成分的器件,因而在数字通讯、语音图象处理、谱分析、模式识别、自动控制等领域得到了广泛的应用。相对于模拟滤波器,数字滤波器没有电压漂移、温度漂移和噪声等,还能够处理低频信号,频率响应特性可作成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应
8、用将会越来越来广泛。同时DSP(DigitalSignalProcessor)处理器的出现和FPGA(FieldProgralnlnableGateArray)的迅速发展也促进了数字滤波器的发展,并为数字滤波的硬件实现提供了更多的选择相对于模拟滤波器,数字滤波器具有以下显著优点:精度高:因此在一般精度要求高的滤波系统中,就必须采用数字滤波来实现。灵活性大:数字滤波的性能主要取决于乘法器的各项系数,而这些系数是存放在系统存储器中的,只要改变存储器存放的系数,就可以得到不同的系统,这些都比改变模拟滤波器系统的特性要容易和方便的多,因而具有很大的灵活性。可靠性高:因为数字系统只有两个电平信号“1”和
9、“O”,受噪声及环境条件的影响小,而模拟滤波各个参数都有一定的温度系数,易受到温度、振动、电磁感应等影响。易于大规模集成:数字部件具有高度的规范性,便于大规模集成,大规模生产,且数字滤波器电路主要工作在截止或饱和状态,对电路参数要求不严格,因此产品的成品率高,价格也日趋降低。相对于模拟滤波器,数字滤波器在体重、重量和性能方面的优势己越来越来明显。并行处理:数字滤波器的另外一个最大的优点就是可以实现并行处理,比如数字滤波器可以采取DSP处理器来实现并行处理。3.3数字滤波器的设计步骤数字滤波器设计的基本步骤如下: (l)确定指标。在设计一个滤波器之前,必须首先根据工程实际需要确定滤波器的技术指标
10、。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形式一般在频域中给出幅度响应和相位响应。幅度指标主要以两种方式给出。第一是绝对指标,它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计。第二种指标是相对指标。它以分贝值的形式给出要求,在工程实际中,比较受到欢迎。对于相位响应指标形式,通常希望系统在通频带中仍然有线性相位。运用线性相位响应的指标进行滤波器设计具有如下优点:只包含实数算法,不涉及复数运算;不存在延迟失真,只有固定数量的延迟;长度为N的滤波器(阶数为N-l),计算量为N/2数量级。 (2)逼近。确定了技术指标后,就可以建立一个目标的数字滤波器模型。通常采用理想的
11、数字滤波器模型。之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。(3)性能分析和计算机仿真。上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求,或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。 窗函数法设计FIR滤波器的MATLAB仿真 MATLAB是一套用于科学计算的可视化高性能语言与软件环境。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境。它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个优秀的算法研究与辅助设计的工具。四、F
12、IR数字滤波器设计的基本方法窗函数法窗函数法的设计思想是按照所要求的理想滤波器频率响应,设计一个FIR滤波器,使之频率响应来逼近。先由的傅里叶反变换导出理想滤波器的冲激响应序列,即: 由于是矩形频率特性,所以是一无限长的序列,且是非因果的,而要计的FIR滤波器的冲激响应序列是有限长的,所以要用有限长的序列h(n)来逼近无限长的序列,最有效的方法是截断,或者说用一个有限长度的窗口函数w(n)序列来截取,即: 。 按照复卷积公式,在时域中的乘积关系可表示成在频域中的周期性卷积关系,即可得所设计的FIR滤波器的频率响应:其中,为截断窗函数的频率特性。由此可见,实际的FIR数字滤波器的频率响应逼近理想
13、滤波器频率响应的好坏,完全取决于窗函数的频率特性。如果w(n)具有下列形式:w(n)相当于一个矩形,我们称之为矩形窗。即我们可采用矩形窗函数w(n)将无限脉冲响应截取一段来近似为。经过加矩形窗后所得的滤波器实际频率响应能否很好地逼近理想频率响应呢?下图给出了理想滤波器加矩形窗后的情况。理想低通滤波器的频率响应如图中左上角图,矩形窗的频率响应为左下角图。根据卷积定理,即得实际滤波器的频率响应图形为图中右图。由图可看出,加矩形窗后使实际频率响应偏离理想频率响应,主要影响有三个方面:(1)理想幅频特性陡直边缘处形成过渡带,过渡带宽取决于矩形窗函数频率响应的主瓣宽度。(2)过渡带两侧形成肩峰和波纹,这
14、是矩形窗函数频率响应的旁瓣引起的,旁瓣相对值越大,旁瓣越多,波纹越多。(3)随窗函数宽度N的增大,矩形窗函数频率响应的主瓣宽度减小,但不改变旁瓣的相对值。为了改善滤波器的性能,需使窗函数谱满足:主瓣尽可能窄,以使设计出来的滤波器有较陡的过渡带;第一副瓣面积相对主瓣面积尽可能小,即能量尽可能集中在主瓣,外泄少,使设计出来的滤波器的肩峰和余振小逼近于理想滤波器。但是这两个条件是相互矛盾的,实际应用中,折衷处理,兼顾各项指标。上边只考虑了矩形窗,如果我们使窗的主瓣宽度尽可能地窄,旁瓣尽可能地小,可以获得性能更好的滤波器,通过改变窗的形状来达到这个目的。在数字信号处理的发展过程中形成了不同于矩形窗的很
15、多窗函数,这些窗函数在主瓣和旁瓣特性方面各有特点,可满足不同的要求。为此,用窗函数法设计FIR数字滤波器时,要根据给定的滤波器性能指标选择窗口宽度N和窗函数w(n)。下面具体介绍几类类窗函数及其特性。1.矩形窗矩形窗函数的时域形式可以表示为:它的频域特性为:2.汉宁窗函数汉宁窗函数的时域形式可以表示为: 它的频域特性为:其中,为矩形窗函数的幅度频率特性函数。汉宁窗函数的最大旁瓣值比主瓣值低31dB,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8/N。3.海明窗函数海明窗函数的时域形式可以表示为: 它的频域特性为:其中,为矩形窗函数的幅度频率特性函数。海明窗函数的最大旁瓣值比主瓣值低41dB
16、,但它和汉宁窗函数的主瓣宽度是一样大的。4.布莱克曼窗 增加一个二次谐波余弦分量,可进一步降低旁瓣,但主瓣宽度进一步增加,增加N可减少过渡带。频谱的幅度函数为: +0.045.三角窗函数三角窗是最简单的频谱函数为非负的一种窗函数。三角窗函数的时域形式可以表示为:当n为奇数时:当n为偶数时:它的频域特性为:三角窗函数的主瓣宽度为8/N,比矩形窗函数的主瓣宽度增加了一倍,但是它的旁瓣宽度却小得多。6.凯泽窗 以上几种窗函数,都是以增加主瓣宽度为代价来降低旁瓣。凯泽窗则可自由选择主瓣宽度和旁瓣衰减,如图(一)。 图(2)式中I0(x)是零阶贝塞尔函数,参数可自由选择,决定主瓣宽度与旁瓣衰减。越大,w
17、(n)窗越窄,其频谱的主瓣变宽,旁瓣变小。 一般取 49,=5.44 接近汉明=8.5 接近布莱克曼=0 为矩形 。 7、 多尔夫-切比雪夫窗定义:, -M=n=M其中,是一个用分数表示的旁瓣相对幅度是X的第e阶切比雪夫多项式。 不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,
18、但幅值识别精度最高。五、 MATLAB仿真滤波实现5.1 MATLAB软件简介MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB 产品族可以用来进行以下各种工作:数值分析,数值和符号计算,工程与科学绘图,控制系统的
19、设计与仿真,通讯系统设计与仿真,财务与金融工程。5.1.1友好的工作平台和编程环境MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。5.1.2简单易用的程序语言Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中
20、将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。5.1.3强大的科学计算机数据处理能力MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。5.1.4出色的图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次
21、的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。5.1.5应用广泛的模块集合工具箱MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。5.1.6实用的程序接口和发布平台新版本的MATLAB可以利用MATLAB编译器和C/C+数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C+代码。允许用户编写可以和MATLAB进行交互的C或C+语言程序。5.1.7应用软件开发(包括用户界面)在开发环境中,使用户更方便地控制多
22、个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等。5.2设计主要用到的MATLAB 函数(1)H,w=freqz(B,A,N) B和A分别为离散系统的系统函数分子、分母多项式的系数向量,N为正整数,返回量H则包含了离散系统频响 在 0pi范围内N个频率等分点的值,向量w则包含 范围内N个频率等分点。调用中若N默认,默认值为512。(2)figure figure是建立图形的意思,系统自动从1,2,3,4.来建立图形,数字代表第几幅图形,figure(1),figure(2)就是第一第二副图的意思。(3)% 这是添加注
23、释的意思,没什么实际意义。(4)tittle 题目标注(5)w=boxcar(n) 输入参数n是窗函数的长度;输出参数w是由窗函数的值组成的n阶向量,从功能上讲,该函数又等价于w=ones?(n,1)。(6) b=fir(n,wn,win) 输入参数win用来指定所使用的窗函数类型,其长度为n+1,默认情况下,win为海明窗。返回的向量b为滤波器的系数,它的阶数为n+1。(7)xlabel x轴标注 ylable y轴标注。(8)hold on 在循环嵌套下,画图如果使用hold on命令可以保留上一次的图形,但每次画出的曲线的样式都相同。(9)plot 二维画图,plot(x,y) % x为
24、图形上之x坐标向量,y为其对应的y坐标向量。此外,还可以对图形进行控制,plot 指令除了接受x 及y 坐标外,还可接受一个字符串输入,用以控制曲线的颜色、格式及线标,其使用语法如下:plot(x, y, CLM)其中C 代表曲线的颜色(Colors),L 代表曲线的格式(Line Styles),M代表曲线所用的线标(Markers)。颜格标 。还比如:plot(x,y,:)其中:代表点线。(10)axis 坐标设置,比如axis(0 2*pi -0.5 0.5),x的坐标范围是0到2,y的范围是-0.5到0.5。5.3 实验结果分析(1)相同的窗口加不同的窗长程序一、汉宁窗不同窗长func
25、tion lpfir5wc=0.25*pi;N=11 21 41;M=N-1;n1=0:N(1)-1;n2=0:N(2)-1;n3=0:N(3)-1;hl1=fir1(M(1),wc/pi,hanning(N(1);hl2=fir1(M(2),wc/pi,hanning(N(2);hl3=fir1(M(3),wc/pi,hanning(N(3);h1,w11=freqz(hl1,1,512);h2,w12=freqz(hl2,1,512);h3,w13=freqz(hl3,1,512);plot(w11/pi,20*log(abs(h1)/max(abs(h1);hold onplot(w12
26、/pi,20*log(abs(h2)/max(abs(h2),:);hold onplot(w13/pi,20*log(abs(h3)/max(abs(h3),-);axis(0 1 -350 10);title(汉宁窗不同窗长);xlabel(/); ylabel(|H(ej)|);legend(M=10,M=20,M=40);end 图(3) 图(3)分别给出了M=10,M=20及M=40时的的幅频特性曲线可以看出,当M取不同值时,都在不同程度上近似于。M过小时,通频带过窄,且阻带内纹波较大,过渡带较宽。当M增大时,近似的程度越来越好,即通频带接近0.25,阻带纹波减小,过渡带变窄。 由该
27、图也可以发现,当M增大时,通带内出现了纹波,随着M的继续增大,这些纹波并不消失,只是最大的上冲越来越接近于间断点()。这种现象称作吉布斯现象。(2)不同窗口加相同的窗长程序二、同窗长的汉宁窗与矩形窗比较function lpfir4wc=0.25;N=21;M=N-1;hl1=fir1(M,wc,hanning(N);hl2=fir1(M,wc,boxcar(N);h1,w11=freqz(hl1,1,512);h2,w12=freqz(hl2,1,512);plot(w11/pi,20*log(abs(h1)/max(abs(h1);hold onplot(w12/pi,20*log(abs
28、(h2)/max(abs(h2),:);title(同窗长的汉宁窗与矩形窗比较);xlabel(/); ylabel(|H(ej)|)legend(汉宁窗,矩形窗)end 图(4) 过渡带的宽度:由于对于不同的窗口而言它们的主瓣宽度不一样,因此例如矩形窗,汉宁窗,因此对于不同窗口过渡带宽度不同。 阻带衰减:不同窗口,当旁瓣的幅度衰减速率比较快的时候,则阻带的衰减则会增大。汉宁窗相对于矩形窗就具有这样的性质,旁瓣衰减较快。吉布斯现象:矩形窗的吉布斯现象比汉宁窗要明显,这与旁瓣的多少和衰减速率的快慢有关,汉宁窗相对于矩形窗,旁瓣较少,衰减较快。(3) 窗函数要求a、 主瓣尽可能窄,以获得较陡的过渡
29、带。 b、最大的副瓣相对于主瓣尽可能的小,也即能量集中在主瓣中。这样,就可以减少肩峰和余振,提高阻带的衰减。这两项要求不可能同时得到最佳,常用的窗函数是在这两个因素之间取得适当的折衷。往往需要增加主瓣宽度以换取副瓣的抑制,如果选用一个窗函数的主要目的是为了得到较锐的截至,就应选用主瓣较窄的窗函数,这样在通带中将产生一些震荡,在阻带中会出现显著的波纹。如果主要目的是为了得到平坦的幅度响应和较小的阻带波纹,这是选用的窗函数的副瓣电平就要较小,但所设计的FIR滤波器的截止锐度就不会很大。六、心得体会及总结通过整个设计过程,让我感触最深的就是功能的强大性与掌握编程各种函数和语句的重要性。当然首先要了解
30、所要编程运行的对象的原理。在课程设计的过程中,我深深的感受到我们所学的东西太少了,需要学习的东西太多了,真的是学无止境。学习的过程是艰辛的,但是同时也是快乐的,让我们大家朝着自己各自的目标努力奋斗,努力学习吧,快乐生活,快乐学习,终将一天我们会成功的。数字信号处理是我们的专业课程,是我们将来从事通事业的基本保障。通过对该课程的学习,我们对数字信号处理有了更进一步的理解:通过对数字滤波器的设计,我们也了解了数字滤波器的基本结构和基本特性,而且还掌握了基本的撰写论文的形式和思路。通过对作为论文的重要部分MATLAB的运用,从而大大提高了我们对计算,变成和绘图于一体的该应用软件的运用能力。而且通过此次的课程设计,使我们在学习理论基础知识的同时学会了应用MATLAB,增强了对理论知识的理解。 尽管现在只是初步学会了简单数字滤波器的设计,离真正掌握还有一定距离,但这段日子确实令我收益匪浅,这将对我今后的学习产生积极的影响。七、参考文献【1】薛定宇 陈阳泉著 高等应用数学问题的MATLAB求解(第二版) 清华大学出版社 2008年10月【2】胡广书著 数字信号处理 理论、算法与实现(第二版) 清华大学出版社 2003年8月【3】王世一著 数字信号处理(修订版) 北京理工大学出版社 2003年2月23