1、 本科毕业论文(设计)论文题目:基于MATLAB的数字滤波器的设计姓名:学号:班级:02班年级:2011级专业:通信工程系部:信息工程学院指导教师:(副教授)完成时间:2015年 4 月 15 日本毕业论文(设计)是在导师的指导下由本人独立撰写完成的,没有剽窃抄袭造假等违反道德学术规范和其他侵权行为对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明因本毕业论文(设计)引起的法律结果完全由本人承担毕业论文(设计)成果归武昌工学院所有特此声明基于MATLAB的数字滤波器的设计The Design Of Digital Filter based on MATLAB 2015 年
2、4月15日摘 要本文研究基于MATLAB的数字滤波器的设计首先介绍了本课题研究的目的及意义,调研了国内外数字滤波器应用现状及发展趋势;接着对MATLAB软件的发展历史语言特点功能特性进行了介绍;其次对数字滤波器进行了简介,其中包括数字滤波器的基本概念类型设计步骤基本结构等;然后本文重点描述了IIR和FIR数字滤波器的设计过程和设计方法对于IIR数字滤波器,详细的分析了双线性变换法脉冲响应不变法:对于FIR数字滤波器,详细分析了窗函数法最小二乘法最优化设计法通过MATLAB软件对五种不同方法编写的程序进行仿真,分析仿真结果,比较各种设计方法的适用范围和它的不可替代性基于MATLAB的数字滤波器的
3、设计,将数字滤波器的设计集于一个软件包,十分方便直观准确和可靠借助于MATLAB设计滤波器的这种优越性,推动了滤波技术的高速发展基于MATLAB语言可扩充的特点,提高了编程的效率,节约了大量的编程时间本文所研究的内容,对通过MATLAB软件设计数字滤波器的发展起到一定的促进和推动作用关键字:IIR数字滤波器;FIR数字滤波器;脉冲响应不变法;双线性变换;窗函数;最小二乘法;最优化设计AbstractdevelopmentKey words: 目 录1 引 言- 1 -1.1课题研究的目的和意义- 1 -1.2国内外发展现状和趋势- 1 -1.3本文研究的主要内容- 3 -2 MATLAB软件概
4、述- 3 -2.1发展历程及语言特点- 3 -2.2 MATLAB的应用与功能特性- 4 -3 数字滤波器简介- 5 -3.1数字滤波器的概念- 5 -3.2 IIR数字滤波器的基本结构- 5 -3.3 FIR数字滤波器的基本结构- 7 -3.4数字滤波器的性能指标- 8 -4 数字滤波器的MATLAB实现- 9 -4.1IIR数字滤波器的MATLAB实现- 9 -4.2 FIR数字滤波器的MATLAB实现- 14 -总 结- 26 -主要参考文献- 27 -后 记- 28 -1 引 言1.1课题研究的目的和意义目前,数字信号处理理论与应用已成为一门及其重要的高新技术学科数字信号处理技术日益成
5、熟,广泛应用于各个领域伴随着社会和经济的伟大变革,如今人人享有通信自由从过去的普通电话到现在随时随地视频聊天,移动电话不再是特殊阶层使用,已成为大众日常生活的普通工具网络资源的共享,使得学生或是工作人士轻而易举的获取到自己想要的资料科技带给我们生活的极大便利,可能很多人会想到计算机发挥了很大作用,但是,数字信号处理技术发挥的作用也是惊人的如果没有这一技术的快速发展和应用,可能我们还没有那么快就可以足不出户而正常生活着数字信号处理(DSP: Digital Signal Processing)经过几十年的不断发展,一套较为完整的的学科领域和理论体系现在逐渐形成了滤波含有过滤之意,将信号中无用部分
6、滤除,得到想要的部分,而滤波却是信号处理技术的一个重要分支凡是信号经过的系统,比如硬件系统算法程序等软件系统,都会起到滤波的作用人们往往熟知通过不同的电子元器件组成的模拟滤波器,但随着计算机技术数字电路技术大规模集成电路技术的发展,数字滤波技术越来越受人们亲赖因为数字滤波器较之模拟滤波器有如下优势:(1)精度高(2)灵活性大(3)性能可靠(4)易于大规模集成,设计简单(5)并行处理(6)性能参数易变基于上述众多优点,数字滤波器在许多的应用领域逐步代替了传统的模拟滤波器,并且正在各种科学研究或工程技术领域里快速发展所以,对数字滤波器的研究和分析有着很重要的实际需要数字滤波已成功应用在语音处理图像
7、处理医疗电视通信雷达航天声纳音乐军事等领域而基于MATLAB软件实现数字滤波器的设计,可通过修改滤波器的参数十分方便的改变滤波器的特性,进而解决一些特定需求因此我们有必要对滤波器的设计方法进行探讨和研究,理解滤波器工作原理,优化设计方法,设计开发出稳定性好的滤波器系统数字滤波涉及大量的运算,离开了计算机及相应的软件,就不可能解决任何稍微复杂的实际应用问题MATLAB已成为国际公认的数字滤波的标准软件和开发平台借助于MATLAB软件设计数字滤波器设计不仅方便而且易于实现,现已成为人们研究和学习的热点因此基于MATLAB的数字滤波器的设计,不仅有着重要的理论意义,而且有着重要的现实意义1.2国内外
8、发展现状和趋势在近代电信装备和各类控制系统中,滤波器应用极为广泛,凡是有能力进行信号处理的装置都可以称为滤波器;在所有的电子产品部件中,使用最广,技术最复杂要算滤波器了对滤波器的研究和生产历来为各国所重视,因为,滤波器的优劣直接决定产品的优劣早在上世纪40年代末,开始了关于数字滤波器的可能性的讨论,并在20世纪50年代也有人讨论了数字滤波的问题在此期间,科学家们做了大量卓有成效的工作,这些工作对于后来数字滤波器的快速发展,发挥了非常重要的作用到了上个世纪60年代中期,美国科学家库里,杜克总结了前人研究成果,经过长期研究,使得快速傅立叶变换的这一成果的到来在数字信号处理和数字滤波中,快速傅立叶变
9、换的出现是学术界一直认可的一个科学里程碑自那时以来,各种快速傅立叶变换已经出现在数字滤波领域,在数字滤波器中开始形成了成套正规理论在这一时期,提出了各种各样的数字滤波结构,有的则以运算速度快见长,有的以运算误差是最小误差为特点,出现了数字滤波器的各种实现方法对递归和非递归两类滤波器作了全面的比较,统一了数字滤波器的基本概念和理论降数字滤波器的一个重要发展是对有限冲激响应和无限冲激响应关系的认识转化在初期,一般认为IIR滤波器比FIR滤波器具有更高的运算效率,因而明显地趋向于前者后来,当人们提出用快速傅利叶变换实现卷积运算的概念之后,发现高阶FIR滤波器也可以用很高的运算效率来实现,这就促使人们
10、对高性能FIR滤波器的设计方法和数字滤波器的频域设计方法进行了大量的研究数字滤波器尽管在语音声纳地震的信号处理中曾经发挥过作用,但由于以前计算机主机的价格很昂贵,严重阻碍了数字滤波器的发展,随着计算机科学的飞速发展,数字滤波器越来越多的展示出它自身的优势,正在加速进入各种工业领域经过最近几十年的发展,线性滤波方法,如维纳滤波卡尔曼滤波和自适应滤波得到了广泛的研究和应用一些非线性滤波方法,如小波滤波同态滤波中值滤波形态滤波等都是现代信号处理的前沿课题,不但有重要的理论意义,而且有广阔的应用前景80年代致力于各类新型滤波器性能提高的研究并逐渐扩大应用范围90年代至今在主要致力于把各类滤波器应用于各
11、类产品的开发和研制当然,对滤波器本身的研究仍在不断进行我国当时主要用于话路滤波和报路滤波,广泛使用滤波器是50年代后期的事我国数字滤波器在研制生产和应用等方面正在快速发展,但由于缺少专门研制机构,经过半个世纪的发展,集成工艺和材料工业跟不上来,使得我国许多新型滤波器的研制应用与国际发展有一段距离模拟滤波器在国内的工程技术中应用中占了很大的比重,数字滤波器在生产应用中所占的比例还不多从应用比例来看,必须加大对这方面的研究投入,数字滤波器才能实现大规模应用在国内也很多学者在数字滤波领域展开长期的深入研究,随着我国科学技术的飞速发展,如山东大学的赖晓平教授天津大学的王兆华教授无论是在理论上还是在工程
12、技术领域,都有很多科研成果我国现有滤波器的种类和所覆盖的频率己基本上满足现有各种电信设备从整体而言,我国提出了一套有关数字滤波器设计的新算法和新设计方案设计空间方法,目前还处于研究阶段在理论研究方面,在研究用模糊数学来设计数字滤波器,在超大规模集成电路领域,对DF的研究也十分活跃对滤波器的性能要求越来越高,功能也越来越多对FIR滤波器而言,从理论上讲要尽可能的降低其阶数,因为随着阶数的增加,实现数字滤波器的运算量就越大,如果阶数不能降低,则对算法的运算效率就要提出更高的具体实现它们的硬件电子元器件必须向大规模集成化方向发展是一个重要的趋势要求,如果没有重大的理论突破,则只能在硬件寻找突破口,所
13、以电子元件的集成化尤其重要我国数字滤波器研制和生产与上述要求相差甚远,电子工程和科技人员肩负着重大的历史责任,为缩短这个差距而且集成化在世界范围内也是一个重要的发展趋势由于缺少专门研制机构,集成工艺和材料工业跟不上来,虽然我国滤波器在研制生产应用等方面已有一定进步,但使许多新型滤波器的研制应用与国际水平有一段距离1.3本文研究的主要内容本次毕业设计中主要完成的内容包括:(1)本课题研究的目的及意义,数字滤波器国内外的应用现状和发展趋势(2)MATLAB的简介,熟悉软件的功能和使用方法通过书籍阅读和文献搜索学习MATLAB和数字滤波器,并掌握MATLAB的使用和数字滤波器的设计方法(3)基于MA
14、TLAB的IIR数字滤波器的设计,对于IIR数字滤波器的设计,采用冲激响应不变法和双线性变换法,编写程序仿真(4)基于MATLAB的FIR数字滤波器的设计,对于IIR数字滤波器的设计,采用窗函数法,最小二乘法,最优化设计法,并进行仿真(5)通过仿真结果分析这几种设计数字滤波器的方法2 MATLAB软件概述2.1发展历程及语言特点 20世纪70年代中期,Cleve Moler博士和其同事开发了调用EISPACK和LINPACK的FORTRAN子程序库其中,EIPACK用来求解特征值,LINPACK用来解线性方程同年后期,Cleve Moler担任美国墨西哥大学计算机系的系主任,为了让学生方便的调
15、用EISPACK和LINPACK,他设计了接口程序,并取名MATLAB(MAtrix LABoratory矩阵实验室)早期的MATLAB是用Fortran编写的,只能进行矩阵运算,绘图也只能用星号描点等简单形式,只提供了几十个内部函数虽然其功能如此简单,当作为免费软件推出以后,还是吸引了大批的使用者第一个商业化的MATLAB是于1984年由MATH WORKS公司推出的,该版本基于当时流行的DOS操作系统,本身也由C语言重新编写1992年具有划时代意义的MATLAB4.0版本发布,用户数剧增1994年的4.2版本扩充了4.0版本的功能,尤其在图形界面设计方面提供了新的方法1997年推出的5.0
16、的版本允许了更多的数据结构,使其扩展为一种非常方便编程的语言工具1999年推出的MATLAB5.3版本在很多方面又进一步提高了MATLAB语言的功能2000年10月底推出了其全新的MATLAB6.0正式版,在核心数值算法界面设计外部接口应用桌面等诸多方面有了极大的改进2004年推出7.0版本,新增12个新产品模块,升级了28个产品模块对MATLAB编程环境代码效率数据可视化数学计算文件I/O等方面进行了升级在这之后,基本每年都会稳定的发布两个更新版本现在的MATLAB支持各种操作系统,能够运行在十几个操作系统平台MATLAB再也不是一个简单的矩阵实验室了,逐渐演变成为一种基于算法开发数据可视化
17、数据分析以及数值计算的计算机高级编程语言和交互式环境MATLAB语言是一种交互性的数学脚本语言,开发环境直接简洁,其语法与C/C+类似它支持包括逻辑数值文本函数柄和异质数据容器在内的15种数据类型,每一种类型都定义为矩阵或阵列的形式在线性代数数理统计自动控制数字信号处理动态系统仿真等方面,MATLAB已表现了其不可替代的一面是科研工作人员和工程技术人员进行科学研究和生产实践的有利武器 MATLAB语言具有下述显着特点:(1)具有强大的矩阵运算能力Matrix Laboratory(矩阵实验室),使得矩阵运算非常简单MATLAB软件是基于矩阵计算开发的,在其他编程语言中需要使用多个for语句才能
18、完成的操作,在MATLAB中直接使用矩阵即可完成计算,因而MATLAB在数据计算分析,特别是对海量数据的处理方面表现出相比其他的编程语言更大的优势(2)多样化的操作途径MATLAB语言为用户提供了多种操作方式选择用户可以编写代码实现各种功能,代码可重复利用,同时,不擅长编程的用户也可以通过MATLAB图形界面操作,完成MATLAB的相应功能(3)功能强大的工具箱对于算法的开发,MATLAB提供了大量现成的函数,用户可以直接调用MATLAB软件对目前主流的算法都提供了现成的函数,并封装成一个个适用于不同领域的算法工具箱常用的工具箱包括数学类经济类信号处理类工具箱,同时随着MATLAB软件版本的更
19、新,不断有功能更强大的工具箱添加到MATLAB中MATLAB语言的这一特点,将大大节省算法开发的时间,用户无须详细了解算法的细节,只要掌握MATLAB中算法相应函数的调用即可(4)良好的扩展能力利用MATLAB语言编写的程序具有良好的扩展能力,可以方便地与各种编程语言链接用户可以方便地在MATLAB中调用其他语言已编写好的程序,同时在其他语言中也可以方便地调用MATLAB的程序MATLAB语言具有良好的接口编程技术(5)完善的帮助系统完善的帮助系统是MATLAB的又一突出特点,MATLAB向用户提供了多种帮助途径,在1.4节中将详细介绍MATLAB强大的帮助系统通过MATLAB的帮助系统,用户
20、可以获取MATLAB常用函数的使用方法及应用实例,而且这种帮助可以是实时的在线的同时,为了便于用户更好地使用MATLAB软件,在MATLAB中的主要算法都是可以直接看到源代码的2.2 MATLAB的应用与功能特性MATLAB具有以下几个功能特性:(1) 功能强大的数值运算能力:MATLAB有超过500种数学统计科学及工程方面的函数可供调用,这些函数使用方法简单自然,允许用数学形式的语言编写程序另外,用户也可以加入自己的函数使系统成为使用者所需要的环境MATLAB编程效率高,易学易懂,因此,该语言被通俗的称为演算纸式科学算法语言(2) 强大的图形处理能力:在MATLAB中数据的可视化非常方便,可
21、以很容易的制作高品质的图形用MATLAB绘图十分方便,它的系列绘图函数均只需调用不同的绘图函数在调用绘图函数时调整自变量可绘出不变颜色的线复线或多重线这种为科学研究着想的设计是一般通用的编程语言所不及的(3) 高级且简单的程序环境:既有结构化的控制语句,又有面向对象的编程特性用MATLAB编程十分简单,所花的时间约为C+的几分之一,而且不需要编译及链接即可执行,并且它的语法限制不严格,可移植性好(4) 丰富的工具箱及模块集:这些功能强劲的工具箱提供了使用者在许多特别应用领域所需的函数同时系统还包含很多种特殊函数,可将基于MATLAB的算法与外部应用程序和语言进行集成(5) 易于扩充:除内部函数
22、外,所有MATLAB的核心文件和工具箱文件都是既可读又可改的源文件,用户能根据自己的需要对这些源文件进行修改或加入自己编写的文件运用MATLAB,将大量的复杂的熟悉运算用MATLAB进行形象直观的计算机模拟与仿真实现随着版本的不断升级,内容不断扩充,功能更加强大,从而被广泛应用于仿真技术自动控制和数字信号处理等领域全球现有超过五十万的企业用户和上千万的个人用户,广泛分布在航空航天金融财务机械化工电信教育等各个行业3 数字滤波器简介3.1数字滤波器的概念滤波,即过滤之意,并不是对所有的干扰信号进行滤除,而是进行一定的衰减,让某些信号成分通过,又阻止或衰减了另一些信号成分,滤波器可广义地理解为一个
23、信号选择系统它按冲激响应h(n)的长度分类可分为有限冲激响应(FIR)数字滤波器和无限冲激响应(IIR)滤波器两种,冲激响应本来是用于模拟系统,指系统对冲激函数(t)的响应发展到数字滤波器后,工程上仍沿用这个名称,与单位抽样响应和单位脉冲响应的说法通用在特性结构设计方法运用场合等方面两种数字滤波器均不相同用系统函数表示为: (式3.1)由系统函数可以得到常系数线形差分程为:(式3.2)可见数字滤波器的功能就是把输入序列x(n)通过一定的运算变换成输出序列y(n)不同的运算处理方法决定了滤波器实现结构的不同无限冲激响应滤波器的单位抽样响应h(n)是无限长的,是递归式的,在结构上存在着输出信号到输
24、入信号的反馈,因此在z平面的有限区间(0z)有极点存在3.2 IIR数字滤波器的基本结构IIR数字滤波器实现的基本结构有:(1) IIR滤波器的直接型结构;优点:延迟线减少一半,变为N 个,可节省寄存器或存储单元;缺点:其它缺点同直接I型通常在实际中很少采用上述两种结构实现高阶系统,而是把高阶变成一系列不同组合的低阶系统来实现(2) IIR滤波器的级联型结构;优点:系统实现简单,只需一个二阶节系统通过改变输入系数即可完成; 极点位置单独调整;运算速度快(可并行进行);各二阶网络的误差互不影响,总的误差小,字长要求低 缺点:不能直接调整零点,因多个二阶节的零点并不是整个系统函数的零点,当需要准确
25、的传输零点时,级联型最合适(3)IIR滤波器的并联型结构优点:简化实现,用一个二阶节,通过变换系数就可实现整个系统;极零点可单独控制调整,调整1i2i只单独调整了第i对零点,调整1i2i则单独调整了第i对极点;各二阶节零极点的搭配可互换位置,优化组合以减小运算误差;可流水线操作缺点:二阶阶电平难控制,电平大易导致溢出,电平小则使信噪比减小a直接型 b并联型 c串联型 图3.1 IIR滤波器的基本结构3.3 FIR数字滤波器的基本结构FIR滤波器的单位抽样响应为有限长度,一般采用非递归形式实现通常的FIR数字滤波器有横截性和级联型两种FIR滤波器实现的基本结构有:(1)FIR滤波器的横截型结构表
26、示系统输入输出关系的差分方程为: (式3.3) 直接由差分方程得出的实现结构如图所示:图3-2横截型(直接型卷积型)若h(n)呈现对称特性,即此FIR滤波器具有线性相位,则可以简化加横截型结构,下面分情况讨论:图3-3N为奇数时线形相位FIR滤波器实现结构 图3-4N为偶数时线性相位FIR滤 波器实现结构(2)FIR滤波器的级联型结构将H(z)分解成实系数二阶因子的乘积形式: (式3.4) 这时FIR滤波器可用二阶节的级联结构来实现,每个二阶节用横截型结构实现如图所示:图3.5 FIR滤波器的级联结构这种结构的每一节控制一对零点,因而在需要控制传输零点时可以采用这种结构3.4数字滤波器的性能指
27、标在进行滤波器设计时,需要确定其性能指标一般来说,滤波器的性能要求往往以频率响应的幅度特性的允许误差来表征以低通滤波器特性为例,频率响应有通带过渡带及阻带三个范围在通带内: 1- AP| H(ej)| 1 |c在阻带中:|H(ej)| Astst |c其中c 为通带截止频率,st为阻带截止频率,Ap为通带误差,Ast为阻带误差图3.6 低通滤波器频率响应幅度特性的容限图与模拟滤波器类似,数字滤波器按频率特性划分为低通高通带通带阻全通等类型,由于数字滤波器的频率响应是周期性的,周期为2各种理想数字滤波器的幅度频率响应如图所示:4 数字滤波器的MATLAB实现4.1IIR数字滤波器的MATLAB实
28、现4.1.1 IIR滤波器设计原理IIR数字滤波器的设计步骤:(1)按一定规则将给出的数字滤波器的技术指标转换为模拟滤波器的技术指标;(2)根据转换后的技术指标设计模拟低通滤波器H(s);(3)在按一定规则将H(s)转换为H(z)若所设计的数字滤波器是低通的,那么上述设计工作可以结束若所设计的是高通带通或者带阻滤波器,那么还有步骤:将高通带通或者带阻数字滤波器的技术指标先转化为低通滤波器的技术指标,然后按上述步骤(2)设计出模拟低通滤波器H(s),再由冲击响应不变法或双线性变换将H(s)转换为所需的H(z)s - z 映射的方法有:冲激响应不变法阶跃响应不变法双线性变换法等4.1.2冲激响应不
29、变法冲激响应不变法是从时域出发,要求数字滤波器的冲激响应h(n)对应于模拟滤波器的冲激响应ha(t)的抽样,即 h(n) =ha(nT) ,其中T是抽样周期冲激响应不变法基本变换过程为:Ha(s) ha(t) h(n) H(z) ( 式4.1) 由于数字滤波器的冲激响应对应模拟滤波器冲激响应的抽样,由抽样定理可知数字滤波器的频率响应为模拟滤波器频率响应的周期延拓: ( 式4.2) 其中,抽样频率为: ( 式4.3)为了避免混叠失真要求模拟滤波器的频谱限带于折叠频率以内,即要满足: ( 式4.4)而实际的滤波器并非严格限带,所以用冲激响应不变法设计的数字滤波器不可避免地会产生混叠失真所以此法只适
30、于设计带限滤波器其映射关系如下:图4.1在MATLAB工具箱中,提供了专用函数impinvar来实现以上计算,其调用格式为:格式一:BZ,AZ= impinvar(B,A,Fs)功能:把具有B,A模拟滤波器传递函数模型转换为采样频率为Fs(HZ)的数字滤波器的传递函数模型BZ,AZ采样频率默认值为Fs=1格式二:BZ,AZ= impinvar(B,A,Fs,TOL)功能:利用指定的容错误差TOL来确定极点是否重复如果设置的容差增大,则函数认为相邻的很近的极点为重复极点的可能性增大默认的TOL=0.001,即0.1%例1采用冲激响应不变法,设计一个Butterworth滤波器,满足如下级数指标:
31、通带边界频率p=0.4,通带衰减函数ap=0.5dB,阻带边界频率ws=0.6,阻带衰减函数as=50dB,选取T=2程序见附录1仿真截图:图4.24.1.3双线性变换法为了克服冲激响应不变法多值映射产生的频率混叠的现象,双线性变换法的映射原理是:(1)通过下面的变换公式把整个S平面压缩到中介S1平面的一条横带里(宽度从-/T到/T),其中C为常数可根据设计要求选取; ( 式4.5)(2) 通过 将此横带变换到整个Z平面,这样就使S平面和Z平面是一一对应的单值映射关系,消除了频谱混叠现象图4.3双线性变换法的映射关系可以证明,从S平面到Z平面的映射关系为: , ( 式4.6)由于从SZ和从ZS
32、的映射规则都是分式线性变换,因此称其为双线性变换MATLAB信号处理工具箱为实现双线型变换提供了函数bilinear,基本调用格式如下:格式一:Zd,Pd,Kd= bilinear(Z,P,K,Fs)功能:把模拟滤波器的零极点模型转换为数字滤波器的零极点模型其中Fs为采样频率格式二:numd,dend= bilinear(num,den,Fs)功能:把模拟滤波器的传递函数模型转换为数字滤波器的传递函数模型格式三:Ad,Bd,Cd,Dd= bilinear(A,B,C,D,Fs)功能:把模拟滤波器的状态方程模型转换为数字滤波器的状态方程模型说明:以上三种调用格式中,可以在增设一个畸变频率Fp(H
33、Z)输入参数在进行双线性变换之前,对采样了频率进行畸变处理,以保证频率冲激响应在双线性变换前后,在Fp处具有良好的单值映射关系例1双线形变换法设计chebyshev高通滤波器采样频率为10Hz,通带临界频率fp =4Hz,通带内衰减小于0.8dB(p=1);阻带临界频率fs=3Hz,阻带内衰减大于20dB(s=25)设计一个数字滤波器满足以上参数程序见附录2仿真截图:FS=10; T=1/FS;fp=4;fs=3;wp=fp/FS*2*pi; ws=fs/FS*2*pi; OmegaP=2*FS*tan(wp/2);OmegaS=2*FS*tan(ws/2);n,Wn=cheb1ord(Ome
34、gaP,OmegaS,0.8,20,s) b,a=cheby1(n,0.8,Wn,high,s);freqs(b,a) %设计模拟的bz,az=bilinear(b,a,FS); %映射为数字的freqz(bz,az,512,FS)bz,az图 4.4例2双线性变换法实现Chebyshev低通(I型)采样频率为10Hz,设计一个数字低通滤波器,要求其通带临界频率fp= 3Hz,通带(p= 1dB),阻带临界频率fs= 4Hz,阻带内衰减大于15dB(内衰减小于1dB程序见附录3仿真截图:T=0.1; FS=1/T; fp=3;fs=4;Rp = 1; As = 15;%频率预畸wp=fp/FS
35、*2*pi; ws=fs/FS*2*pi; OmegaP = (2/T)*tan(wp/2);OmegaS = (2/T)*tan(ws/2);%设计Chebyshev低通滤波器原型ep = sqrt(10(Rp/10)-1);A = 10(As/20);OmegaC = OmegaP;OmegaR = OmegaS/OmegaP;g = sqrt(A*A-1)/ep;N = ceil(log10(g+sqrt(g*g-1)/log10(OmegaR+sqrt(OmegaR*OmegaR-1);z,p,k = cheb1ap(N,Rp);%获取零极点参数a = real(poly(p);aNn
36、 = a(N+1);p = p*OmegaC;a = real(poly(p);aNu = a(N+1); k = k*aNu/aNn;b0 = k;B = real(poly(z);b = k*B; %双线性变换bz,az = bilinear(b,a,FS); %绘制结果freqz(bz,az,200,FS,whole);H=freqz(bz,az,200,whole);plot(abs(H);图 4.54.2 FIR数字滤波器的MATLAB实现4.2.1 FIR滤波器设计原理由于FIR 滤波器冲击响应hn是有限长序列,因此这种结构可用非递归结构来实现FIR 数字滤波器系统函数一般形式为:
37、 ( 式4.7)FIR 滤波器数学表达式可用差分方程来表示: ( 式4.8)式中:y(n)输出序列;h(k)滤波器系数;n滤波器阶数;x(k)输入序列基于Matlab 设计FIR滤波器关键在于以下几个步骤:(1) 根据给定的性能指标设计一个H(z),使其逼近这一指标;(2)计算并确定滤波器的系数b(n);(3)将所设计滤波器的幅频响应相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化 FIR滤波器的设计方法主要有窗函数法最优化设计法及约束最小二乘逼近法在滤波器传统设计中,要得到其幅频和相频响应特性,需要根据这些方法进行大量的计算,这使得滤波器的设计缓慢,周期变长,不利于设计的优化
38、Matlab信号处理工具箱中提供了基于滤波器设计方法的工具函数,编程中可根据设计要求直接调用相应的函数,方便快捷,见表1 表1 FIR数字滤波器设计方法及函数调用格式设计方法调用方法调用格式说明窗函数法Fir1Fir2b=fir1(n,Wn)b=fir2(n,f,m)n为阶数;Wn为截止频率f,m为期望幅频向量和幅值向量最优化设计法FirlsRemezRemezordb=firls(n,f,a)bremez(n,f,a,w) n ,fo ,ao ,w =remezord (f ,a ,dev)两者仅算法不同,f为频率点向量,n为指定频率点幅度响应,w为权系数Fo为归一化频率边界,ao为频带内幅
39、值,w为权向量最小二乘法FirclsFircls1b=fircls(n,f,a,up,lo)b=fircls1(n,wo,dp,ds)up,lo为每个频带上边界和下边界频率,f,a为期望幅频特性的频率向量和幅值向量Wo为截至频率,dp为离幅值1的最大偏差,ds为阻带离幅值0的最大偏差4.2.2 用窗函数法设计FIR数字滤波器窗函数设计技术是FIR滤波器设计的主要方法之一,由于其运算简单精度高,已成为工程中应用最广泛的设计方法设计滤波器的基本思想是让待设计的实际滤波器逼近理想特性理想低通滤波器的频率特性应为:振幅特性在通带内为1,阻带内为0;在通带内的相位特性与w成线性关系,即 ( 式4.9)它
40、对应的理想单位冲激相应hd(n)为 ( 式4.10)可见,理想低通滤波器的单位冲激响应hd (n)是无限长的非因果序列而我们要设计的是FIR滤波器,其h( n)必然是有限长的,为了构造物理上可以实现的长度为N 的因果线性相位滤波器,必须将hd( n) 截取长度为N 的一段,或者说用一个有限长度的窗口函数序列w ( n) 来截取hd ( n),即h( n) = w ( n) hd ( n),因而窗函数序列的形状及长度的选择就是关键工程实际中常用的窗函数有6种,即矩形窗三角形窗汉宁(Hanning)窗哈明(Hamming)窗布莱克曼(Blackman) 窗和凯泽( Kaiser) 窗它们之间的性能
41、比较如表2所示实际的FIR数字滤波器的频率响应H() 逼近理想滤波器频率响应Hd()的好坏,取决于窗函数的频率特性W( w)表2 6种窗函数的特性窗函数旁瓣峰值/dB近似过渡带宽精确过渡带宽阻带最小衰减/dB矩形窗-134/N1.8/N21三角形窗-258/N6.1/N25汉宁窗-318/N6.2/N44哈明窗-418/N6.6/N53布莱克曼窗-5712/N11/N74凯泽窗()-5710/N80窗函数法设计步骤用窗函数设计FIR滤波器的步骤为: (1)选择窗函数类型能够和长度,写出窗函数w(n)表达式根据阻带最小衰减选择窗函数w(n)的类型,再根据过渡带宽确定所选窗函数的长度N(2)构造希
42、望逼近的频率响应函数根据设计需要,一般选择相应的线性相位理想滤波器(理想低通,理想高通,理想带通,理想带阻)应当注意,理想滤波器的截止频率wc点(对低通滤波器)近似为最终设计的FIRDFD的-6dB频率(3)计算: ( 式4.11)(4)加窗得到设计结果: ( 式4.12)实际设计时,一般采用MATLAB工具箱函数实现步骤(1)由设计者根据设计指标完成,步骤(2)-(4)的解题过程可调用设计函数fir1来实现Fir1时用窗函数法设计线性相位FIRDF的工具箱函数,调用格式如下:hn=fir1(N,wc,ftype,window) fir实现线性相位FIR滤波器的标准窗函数法设计“标准”时指再设
43、计低通高通带通带阻FIR滤波器时,分别取相应的理想低通高通带通带阻滤波器,故而设计的滤波器的频率响应称为标注频率响应hn=fir1(N,wc)可得到6dB截至频率为wc的N阶(单位脉冲响应h(n)长度为N+1)FIR低通滤波器,默认(缺省参数windows)选用hammiing窗其单位脉冲响应h(n)为:h(n)=h(n+1),n=0,1,2,N而且满足线性相位条件:h(n)=h(N-1-n)其中wc为对归一化的数字频率,0wc1hn=fir1(N,wc,ftype)可设计高通和带阻滤波器当ftype=high时,设计高通FIR滤波器;当ftype=stop时,设计带阻FIR滤波器hn=fir1(N,wc,ftype,window)通过选择wcftype和window参数,可以设计各种加窗滤波器Fir2可以指定任何形状的Hd(),用help命令查阅其调用格式例1: 设计一个低通滤波器,性能指标为通带01000Hz,阻带截止频率为2000Hz,通带波动1%,阻带波动5%,采样频率为10000Hz,采用Kaiser窗程序见附录4仿真截图:fc=1000