基于MATLAB的FIR 数字低通滤波器设计本科毕业设计 下载本文

天津大学仁爱学院2013届本科生毕业生设计(论文)

第三章 MATLAB简介

3.1 MATLAB基本功能

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平[3]。

3.2 MATLAB的优势及特点

MATLAB的优势

(1) 工作平台编程环境十分友好 (2)数据的计算处理能力十分强大 (3)图像处理能力强大 (4)编程语言简单易用 (5)模块集合工具箱应用广泛 (6)程序的接口和发布平台很实用 (7)可以开发用户界面 MATLAB语言的特点

MATLAB语言被称为第四代计算机语言,其利用丰富的函数资源,使程序员从繁琐的程序代码中解放出来,其最突出的特点是简洁。MATLAB用更直观的、符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码,给用户带来最直观、最简洁的程序开发环境,下面简单介绍一下MATLAB的主要特点。

语言简洁紧凑,使用非常方便,库函数十分丰富。MATLAB程序书写的形式自由,利用丰富的库函数避开了繁琐的子程序编程任务,由于库函数都是由本领域的专家编写,所以不必担心函数的可靠性。

高效方便的矩阵和数组运算,MATLAB语言不需要定义数组的维数,并给出了矩阵函数、特殊矩阵函数、特殊矩阵专门的库函数,使得在求解信号处理、建模、系统识别、优化和控制等领域的问题时,显得大为简洁、方便、高效,这是其他高级语言所不能的。

MATLAB既具有结构化的控制语句,又具有面向对象编程的特性。 MATLAB语法限制不严格,程序设计自由度大,通过建立M后缀名文件的形式,与用户已经编好的FORTRAN、C语言成语混合编程,方便地调用有关的FORTRAN、C语言的子程序。可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上面运行。

4

天津大学仁爱学院2013届本科生毕业生设计(论文)

MATLAB的图形功能强大。在C和FORTRAN语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。此外,MATLAB还具有较强的编辑图形界面的能力。

MATLAB拥有功能强大的工具箱,主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实施交互功能。

源程序的开放性强。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改变的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。

MATLAB软件自1984年推向市场以来,历经十几年的发展和竞争,现已成为国际公认的最优秀的科技应用软件。它功能强大、界面友好、语言自然、开放性强,很快成为应用学科计算机辅助分析、设计、仿真、教学乃至科技文字吹不可缺少的基础软件。

图3-1 MATLAB主界面

5

天津大学仁爱学院2013届本科生毕业生设计(论文)

第四章 FIR数字滤波器的设计

4.1 窗函数法设计FIR数字滤波器

要设计出的滤波器的理想频率响应函数为

1 hd(n)?2?,则对应的单位脉冲响应为

??H??d(ej?)ej?nd? (4-1)

窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼近hd(n)。由于hd(n)往往是无限长序列,且是非因果的,所以用窗函数ω(n)将hd(n)截断,并进行加权处理,得到

N?1n?0 (4-2)

h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数 H(e)??h(n)e?j?n (4-3)

j?为(4-3)式中,N为所选窗函数ω(n)的长度。

用窗函数法设计的滤波器性能取决于窗函数ω(n)的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N。 出

这样选定窗函数类型和长度N后,求出单位脉冲响应

,并求

。是否满足要求,要进行验算。一般在h(n)尾部加零使长度满足2的整

数次幂,以便用FFT计算。如果要观察细节,补零点数增多即可。不满足要求,则要重新选择窗函数类型和长度N,再次验算,直至满足要求。

如果要求线性相位特性,则h(n)还必须满足:h(n)=+/-h(N-1-n),根据式中的正负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。要根据所设计的滤波特性正确选择其中一类[8]。 下面介绍下典型的窗函数:

常见的窗函数有矩形窗(Rectangle Window)、三角形窗(Bartlerr Window)、汉宁(Hanning)窗——升余弦窗、哈明(Hamming)窗——改进的升余弦窗、布莱克曼(Blackman)窗、凯塞—贝塞尔窗(Kaiser-Basel Window) 1矩形窗(Rectangle Window)

矩形窗属于时间变量的零次幂窗。矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。 矩形窗的窗函数为:

6

天津大学仁爱学院2013届本科生毕业生设计(论文)

N?1?1n?? ?R(n)??2 (4-5)

??0otherwise其频谱的幅度函数为:

WRk(?)sin(?N/2)sin(?/2) (4-6)

2三角形窗(Bartlett Window)

三角窗亦称费杰(Fejer)窗,是幂窗的一次方形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。 三角形窗的窗函数为:

?2n??N?1 ?B(n)???2?2n?N?1?0?n?1(N?1)21(N?1)?n?N?122 (4-7)

其频谱的幅度函数为:

2 WBg(?)?N?sin(?N/4)? (4-8) ???sin(?/2)?3汉宁(Hanning)窗------升余弦窗

汉宁窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是3个 sinc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了 π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。可以看出,汉宁窗主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。

汉宁窗的窗函数为:

2n???0.5?0.5cos ?H(n)??N?1??00?n?Notherwise (4-9)

4哈明(Hamming)窗————改进的升余弦窗

这种改进的升余弦窗,能量更加集中在主瓣中,主瓣的能量约占99.96%,瓣峰值幅度为40dB,但其主瓣宽度和汉宁窗的相同,仍为8π/N.可见哈明窗是一种高效窗函数,所以Matlab窗函数设计函数的默认窗函数就是哈明窗。 哈明窗的窗函数为:

7

天津大学仁爱学院2013届本科生毕业生设计(论文)

2n??0.54?0.64cos??H(n)??N?1??00?n?Notherwise (4-10)

其幅度函数为:

5布莱克曼(Blackman)窗

(4-11)

该窗函数位移不同,幅度函数也不同,会使旁瓣进一步抵消,主瓣宽度为 12

π/N。

布莱克曼窗的窗函数为:

2?n4?n?(0.42?0.5cos?0.8cos)? ?B(n)??N?1N?1??0N?12 (4-12) otherwisen?其频谱的幅度函数为:

WB(?)?0.42WR(?)?0.25[WR(??2?2?)?WR(??)]N?1N?1 (4-13) 4?4??0.04[WR(??)?WR(??)]N?1N?1

6凯撒——贝赛尔窗(Kaiser-Basel Window)

凯塞窗是一种最优窗函数,不同于前面五种窗函数,凯塞窗是一种参数可调的窗函数,其函数形式如下:

?K(n)?Io(?)Io(?)0?n?N?1 (4-14)

其中

2n ???1?(?1)2N?11?Io(?)?1??[?]2 (4-15)

2k?1k?一般取15-25项可以满足精度要求。参数可以控制窗的形状。一般越

大,主瓣越宽,而旁瓣幅度会随之减小,典型的是介绍6种窗函数的基本参数

数据在4到9之间。表4-1

8