1、淮安信息职业技术学院摘 要本论文介绍了FIR数字滤波器的设计方法,即窗函数法。在此基础上,用MATLAB实现IIR数字滤波器。介绍了IIR数字滤波器的传统设计思想与步骤,及其计算机辅助设计方法。以一数字带通滤波器为例,着重说明了基于MATLAB的三种滤波器的实现手段:模拟低通原型、合适模拟带通及直接原型,为数字滤波器设计带来全新的实现手段。关键词:滤波 IIR滤波器 FIR滤波器 MATLAB目 录第一章 前言 1.1 MATLAB 软件简介 (4)1.2数字滤波器技术的发展状况 (5)第二章 数字滤波器的基本概念2.1数字滤波器的概况 (6)2.2 FIR 数字滤波器的基本概念 (6)2.2
2、.1 FIR 数字滤波器的窗函数设计法 (7)2.2.2 窗函数设计法的步骤 (7)2.3 MATLAB环境下的实例 (9)2.3.1高通滤波器的设计 (9)2.3.2低通滤波器的设计 (10)第三章 IIR数字滤波器的设计过程及方法3.1 IIR滤波器的基本特点 (13)3.2 IIR滤波器的设计思路与步骤 (14)3.3 IIR 滤波器的设计 (14)3.4 IIR滤波器设计方法MATLAB的实现 (15)3.4.1 基于模拟低通原型的MATLAB实现 (15)3.4.2基于合适类型模拟滤波器的MATLAB实现 (16)3.4.3 基于直接原型变换法的MATLAB实现 (18)总 结(19
3、)参考文献(20)第一章 前言1.1. MATLAB简介MATLAB (Matrix Laboratory)为美国Mathworks公司1983年首次推出的一套高性能的数值分析和计算软件,其功能不断扩充,版本不断升级,1992年推出划时代的4.0版,1993年推出了可以配合Microsoft Windous使用的微机版,95年4.2版,97年5.0版,99年5.3版,5.X版无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和PDF格式,可以方便的浏览。至2001年6月推出6.1版,2002年6月推出6.5版,继而推出6.5.1版, 2004年7月MATLAB7和Simulink6.0
4、被推出,目前的最新版本为7.1版。 MATLAB将矩阵运算、数值分析、图形处理、编程技术结合在一起,为用户提供了一个强有力的科学及工程问题的分析计算和程序设计工具,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能,是具有全部语言功能和特征的新一代软件开发平台。 MATLAB 已发展成为适合众多学科,多种工作平台、功能强大的大型软件。在欧美等国家的高校,MATLAB已成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具。成为攻读学位的本科、硕士、博士生必须掌握的基本技能。在设计研究单位和工业开发部门,MATLAB被广泛的应用
5、于研究和解决各种具体问题。在中国,MATLAB也已日益受到重视,短时间内就将盛行起来,因为无论哪个学科或工程领域都可以从MATLAB中找到合适的功能。 MATLAB6.1 的新功能 (1) 全新的开发环境GUIDE(GUI Development Environment):由早期的单一命令窗口发展为将一些常用的交互式工作界面高度的集中于操作桌面; (2) 在命令窗口增加了错误跟踪功能(error display message and abort function); (3) 提供了许多新的数值处理功能(numerical Treatment Techniques),更新了部分函数的功能和算法
6、,增加了许多新函数; (4) 在图形窗口增加了曲线拟合、数据统计等交互工具;(Curve Fitting, Data Analyzing ) (5) 引入了类与对象及函数句柄等概念;(Object,Handle) 用户可以创建自己定义的类函数和函数句柄; (6) 改进了编辑/调试器的界面及功能; (Editor/Debugger)增加了行号和书签等功能; (7) 属性编辑器功能更强(Property Debugger),使用更方便; (8) 建立了一个与以前完全不同的图形用户界面(GUI)图形窗口,(Graphical Window)使用更加方便灵活; (9) 增加了虚拟现实工具箱,(Virt
7、ual Reality Toolbox)使用标准的虚拟现实建模语言(VRML)技术,可以创建由MATLAB和simulink环境驱动的三维动画场景; (10) 在应用程序接口方面增加了与Java的接口(Interface for Java),并为二者的数据交换提供了相应的程序库。1.2数字滤波器技术的发展状况及简介 数字滤波器是数字信号处理理论的一部分。数字信号处理主要是研究用数字或符号的序列来表示信号波形,并用数字的方式去处理这些序列,把它们改变成在某种意义上更为有希望的形式,以便估计信号的特征参量,或削弱信号中的多余分量和增强信号中的有用分量。具体来说,凡是用数字方式对信号进行滤波、变换、
8、调制、解调、均衡、增强、压缩、固定、识别、产生等加工处理,都可纳入数字信号处理领域。 滤波器的种类很多,从功能上可以分为低通、高通、带通和带阻滤波器,上述每种滤波器又可以分为模拟滤波器和数字滤波器。如果滤波器的输入输出都是数字信号,则这样的滤波器称之为数字滤波器,它通常通过一定的运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分来实现滤波。根据数字滤波器冲激响应的时域特性,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。有数字信号处理的一般理论可知,IIR滤波器的特征是具有无限持续时间的冲激响应,而FIR滤波器使冲激响应只能持续一定的时间。
9、第二章 数字滤波器的基本概念2.1数字滤波器的概况数字滤波技术是数字信号处理的一个重要组成部分,滤波器的设计是信号处理的核心问题之一。根据FIR滤波器的原理,提出了FIR滤波器的窗函数设计法,并对常用的几种窗函数进行了比较。给出了在MATLAB环境下,用窗函数法设计FIR滤波器的过程和设计实例。仿真结果表明,设计的FIR滤波器的各项性能指标均达到了指定要求,设计过程简便易行。该方法为快速、高效地设计FIR滤波器提供了一个可靠而有效的途径。 随着信息时代的到来,数字信号处理已经成为当今一门极其重要的学科和技术,并且在通信、语音、图像、自动控制等众多领域得到了广泛的应用。在数字信号处理中,数字滤波
10、器占有极其重要的地位,它具有精度高、可靠性好、灵活性大等特点。现代数字滤波器可以用软件或硬件两种方式来实现。软件方式实现的优点是可以通过滤波器参数的改变去调整滤波器的性能。MATLAB是一种面向科学和工程计算的语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,具有编程效率高、调试手段丰富、扩充能力强等特点。MATLAB的信号处理工具箱具有强大的函数功能,它不仅可以用来设计数字滤波器,还可以使设计达到最忧化,是数字滤波器设计的强有力工具。 2.2 FIR数字滤波器的基本概念 R滤波器的数学表达式为:式中,N是FIR滤波器的抽头数,x(n)表示第n时刻的输入样本;h(i)是FIR滤波器的第i
11、级抽头系数。普通的直接型FIR滤波器结构如图1所示。FIR滤波器实质上是一个分节的延迟线,把每一节的输出加权累加,便得到滤波器的输出。对于FIR滤波器,幅度上只需满足以下两个条件之一,就能构成线性相位FIR滤波器。h(n)=h(N-1-n) (2)h(n)=-h(N-1-n) (3)(没有式一?)式(2)称为第一类线性相位的幅度条件(偶对称),式(3)称为第二类线性相位的幅度条件(奇对称)。2.2.1 FIR滤波器的设计 根据冲激响应的时域特性,数字滤波器可分为无限长冲激响应滤波器(IIR)和有限长冲激响应滤波器(FIR)。FIR的突出优点是:系统总是稳定的、易于实现线性相位、允许设计多通带(
12、或多阻带)滤波器,但与IIR相比,在满足同样阻带衰减的情况下需要的阶数较高。滤波器的阶数越高,占用的运算时间越多,因此在满足指标要求的情况下应尽量减少滤波器的阶数。FIR滤波器的基本结构可以理解为一个分节的延时线,把每一节的输出加权累加,可得到滤波器的输出。FIR滤波器的冲激响应h(n)是有限长的,数学上M阶FIR滤波器可以表示为:FIR滤波器的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数的问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。2.2.2 窗函数设计法的步骤窗函数设计法是一种通过截短和计权的方法使无限长非因果序列成为有限长脉冲响应序列的设计方法。通常在设计
13、滤波器之前,应该先根据具体的工程应用确定滤波器的技术指标。在大多数实际应用中,数字滤波器常常被用来实现选频操作,所以指标的形式一般为在频域中以分贝值给出的相对幅度响应和相位响应。用窗函数法设计FIR滤波器的步骤如下:(1)根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1)。窗函数类型可根据最小阻带衰减AS独立选择,因为窗口长度N对最小阻带衰减AS没有影响。在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N。设待求滤波器的过渡带宽为,它与窗口长度N近似成反比。窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在
14、计算中逐步修正。原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N。在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数wd(n)。(2)根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n)。如果给出待求滤波器的频率响应为Hd(ej),则理想的单位脉冲响应可以用下面的傅里叶反变换式求出:在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示。从=0到=2采样N点,采用离散傅里叶反变换(IDFT)即可求出。(3)计算滤波器的单位脉冲响应h(n)。它是理想单位脉冲响应和窗函数的乘积,即h(n)=hd(n)wd(n),在MATLAB中用点乘命令表示为h=hdwd。
15、(4)验算技术指标是否满足要求。为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。使用窗函数法设计时要满足以下两个条件:(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带;(2)尽量减少窗谱的最大旁瓣的相对幅度,也就是使能量尽量集中于主瓣,减小峰肩和纹波,进而增加阻带的衰减。根据工程经验,给定的滤波器指标参数一般为通带截止频率p、阻带截止频率s、实际通带波动Rp和最小阻带衰减As。窗函数设计的经验公式为:在实际工程中常用的窗函数有五种,即矩形窗、三角窗、汉宁窗、海明窗和凯泽窗。这些窗函数在MATLAB中分别用boxcar
16、、triang、hanning、hamming、kaiser实现,它们之间的性能比较如表1所示。表1 5种窗函数性能比较窗类型旁瓣峰值主瓣峰值最小阻带衰减矩形窗13dB4/M21dB三角窗25dB8/M25dB汉宁窗31dB8/M44dB海明窗41dB8/M53dB凯泽窗57dB12/M74dB2 .3 MATLAB环境下的设计实例2.3.1 高通滤波器的设计用窗函数设计高通滤波器,性能指标如下:通带截止频率s=0.2,阻带截止频率p=0.3,实际通带波动Rp=0.25dB,最小阻带衰减As=70dB。分析:从表1可以看出凯泽窗能提供74dB的最小阻带衰减,所以选用凯泽窗进行设计,程序主要部分
17、如下:As=70;s=0.2*;p=0.3*tr_width=p-s;%计算过渡带宽M=ceil(As-7.95)*2*/(14.36*tr_width)+1)+1;按凯泽窗计算滤波器长度disp(滤波器的长度为,num2str(M);beta=0.1102*(As-8.7); %计算凯泽窗的值n=0:1:M-1;disp(线性相位斜率为,num2str(beta); w_kai=(kaiser(M,beta); %求凯泽窗函数 c=(s+p)/2; hd=ideal_lp(,M)-ideal_lp(c,M); %求理想脉冲响应 h=hd*w_kai; %设计的脉冲响应为理想脉冲响应与窗函数乘
18、积 db,mag,pha,grd,=freqz_m(h,1); delta_=2*/1000; Rp=-(min(db(p/delta_+1:1:501); disp(实际通带波动为,num2str(Rp);%以下为作图程序 As=-round(max(db(1:1:s/delta_+1); disp(最小阻带衰减为,num2str(As);subplot(1,1,1);subplot(2,2,1);stem(n,hd);title(理想脉冲响应);axis(0 M-1 -0.4 0.8);ylabel(hd(n);subplot(2,2,2);stem(n,w_kai);title(凯泽窗)
19、; axis(0 M-1 0 1.1);ylabel(wd(n);subplot(2,2,3);stem(n,h);title(实际脉冲响应);axis(0 M-1 -0.4 0.8);xlabel(n);ylabel(h(n);subplot(2,2,4);plot(/,db);title(幅度响应/dB);axis(0 1 -100 10);grid;xlabel(以为单位的频率);ylabel(分贝数/dB);程序运行结果如图1所示。实际通带波动为0.04369,最小阻带衰减为70,滤波器长度为89,线性相位斜率为6.7553,符合设计要求。(下图是否能通过仿真完成?)2.3.2 低通滤
20、波器的设计用窗函数设计低通滤波器,性能指标如下:通带截止频率p=0.1,阻带截止频率s=0.25,实际通带波动Rp=0.10dB,最小阻带衰减As=40dB。分析:从表1可以看出,汉宁窗、海明窗和凯泽窗能提供大于40dB的最小阻带衰减。但汉宁窗的旁瓣峰值较小,而主瓣宽度和海明窗一样。可以使滤波器的阶数较少,所以选用汉宁窗进行设计,程序主要部分如下:p=0.10*;s=0.25*;tr_width=s-p; %计算过渡带宽M=ceil(6.6*/tr_width)+1; %按汉宁窗计算滤波器长度disp(滤波器的长度为,num2str(M);n=0:M-1;c=(s+p)/2; %截止频率取为两
21、边缘频率的平均值hd=ideal_lp(c,M); %求理想脉冲响应w_han=(hanning(M); %求汉宁窗函数h=hd*w_han; %设计的脉冲响应为理想脉冲响应与窗函数乘积db,mag,pha,grd,=freqz_m(h,1);%以下为作图语句delta_=2*/1000;Rp=-(min(db(1:1: p/delta_+1);disp(实际通带波动为,num2str(Rp); %以下为作图程序As=-round(max(db(s/delta_+1:1:501);disp(最小阻带衰减为,num2str(As);subplot(221)stem(n,hd);title(理想冲
22、击响应),axis(0 M-1 -0.1 0.3);ylabel(hd(n);subplot(222)stem(n,w_han);title(汉宁窗),axis(0 M-1 0 1.1);ylabel(wd(n);subplot(223)stem(n,h);title(实际冲击响应), axis(0 M-1 -0.1 0.3);xlabel(n);ylabel(h(n);subplot(224);plot(/,db);title(幅度响应(db);axis(0 1 -100 10),grid;xlabel(以为单位的频率);ylabel(分贝数);仿真结果如图2所示。实际通带波动为0.0765
23、65,最小阻带衰减为44,滤波器长度为67,符合设计要求。与其他高级语言的程序设计相比,MATLAB环境下可以更方便、快捷地设计出具有严格线性相位的FIR滤波器,节省大量的编程时间,提高编程效率,且参数的修改也十分方便,还可以进一步进行优化设计。相信随着版本的不断提高,MATLAB在数字滤波器技术中必将发挥更大的作用。同时,用MATLAB计算有关数字滤波器的设计参数,如H(z)、h(n)等,对于数字滤波器的硬件实现也提供了一条简单而准确的途径和依据。第三章 IIR数字滤波器设计过程及方法 3.1 IIR数字滤波器的基本特点 1.IIR数字滤波器的系统函数可以写成封闭函数的形式。2.IIR数字滤
24、波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。 3.IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。 4.IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相
25、位校准网络。 在MATLAB下设计IIR滤波器可使用Butterworth函数设计出巴特沃斯滤波器,使用Cheby1函数设计出契比雪夫I型滤波器,使用Cheby2设计出契比雪夫II型滤波器,使用ellipord函数设计出椭圆滤波器。下面主要介绍前两个函数的使用。 与FIR滤波器的设计不同,IIR滤波器设计时的阶数不是由设计者指定,而是根据设计者输入的各个滤波器参数(截止频率、通带滤纹、阻带衰减等),由软件设计出满足这些参数的最低滤波器阶数。在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择。 IIR单位响应为无限脉冲序列FIR单位响应为有限的;iir幅频特性精度很高,不是
26、线性相位的,可以应用于对相位信息不敏感的音频信号上; fir幅频特性精度较之于iir低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变。这是很好的性质。 另外有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。 数字滤波器是具有一定传输选择特性的数字信号处理装置,其输入、输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。它的基本工作原理是利用离散系统特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用频率的信号分量通过,抑制无用的信号分量输出。数字滤波器和模拟滤波器有着相同的滤波概念,根据
27、其频率响应特性可分为低通、高通、带通、带阻等类型,与模拟滤波器相比,数字滤波器除了具有数字信号处理的固有优点外,还有滤波精度高(与系统字长有关)、稳定性好(仅运行在0与l两个电平状态)、灵活性强等优点。数字滤波器按单位脉冲响应的性质可分为无限长单位脉冲响应滤波器IIR和有限长单位脉冲响应滤波器(FIR)两种。本文介绍(IIR)数字滤波器的设计与分析。数字滤波器技术指标指标参数变换模拟滤波器技术指标相应模拟滤波器设计模拟滤波器离散化数字滤波器3.2 IIR数字滤波器设计思路与步骤 IIR 数字滤波器可用一个n阶差分方程y(n)=brx(n-r)+aky(n-k),或用它的Z域系统函数:对照模拟滤
28、波器的传递函数: 不难看出,数字滤波器与模拟滤波器的设计思路相仿,其设计实质也是寻找一组系数b,a,去逼近所要求的频率响应,使其在性能上满足预定的技术要求;不同的是模拟滤波器的设计是在S平面上用数学逼近法去寻找近似的所需特性H(S),而数字滤波器则是在Z平面寻找合适的H(z)。IIR数字滤波器的单位响应是无限长的,而模拟滤波器一般都具有无限长的单位脉冲响应,因此与模拟滤波器相匹配。由于模拟滤波器的设计在理论上已十分成熟,因此数字滤波器设计的关键是将H(S)H(Z),即,利用复值映射将模拟滤波器离散化。已经证明,冲击响应不变法和双线性变换法能较好地担当此任,则在此基础上,数字滤波器的设计就可首先
29、归结为模拟滤波器的设计了。 数字滤波器的设计步骤如图3.1所示。 图3.1 数字滤波器设计步骤3.3 IIR数字滤波器设计方法 IIR数字滤波器的设计方法有多种,可归纳为下述两种。1 .传统设计方法 根据前述设计思路,首先设计一个模拟原型滤波器(截止频率为1rad/s的低通滤波器),然后在模拟域(S平面)进行频率变换,将模拟原形滤波器转换成所需类型(指定截止频率的低通、高通、带通、带阻)的模拟滤波器,再将其数字离散化,从S平面映射至Z平面,得到所需技术指标的数字滤波器。 上述过程中,也可先将模拟原型离散化,得到数字原型滤波器,继而在数字域(Z平面)进行频率变换,得到所需类型的数字滤波器。 模拟
30、滤波器到数字滤波器的转换可在时域进行也可在频域实现,时域转换的关键是要使数字滤波器与模拟滤波器时域响应的采样值相等,以保持其瞬态特性不变,常用的是冲击响应不变法。频域变换法必须使得数字滤波器在-范围内的幅频特性与模拟滤波器在-/T/T 范围内的幅频特性一致,即保证S平面与z平面上幅频特性的一一单值对应关系,常用的是双线性变换法。2.计算机辅助设计方法 传统设计方法思路清晰,步骤详尽,可参阅公式、手册循章而行。但由于计算繁琐,手工计算大多只能用来进行简单低阶选频滤波器(如LP,HP,BP及BS等)的设计。计算机辅助设计方法是集电路理论、网络图论、数值分析、矩阵运算、元件建模、优化技术、高级计算机
31、语言等多交叉学科于一身的新领域,它把计算机的快速、高精度、大存储容量、严格的逻辑判断和优良的数据处理能力与人的思维创造能力充分结合起来,极大地简化了数字滤波器的设计过程。在优秀科技应用软件MATLAB的信号处理工具箱中,提供了一整套模拟、数字滤波器的设计命令和运算函数,方便准确,简单易行,使得设计人员除了可按上述传统设计步骤快速地进行较复杂高阶选频滤波器的计算、分析外,还可通过原型变换法直接进行各种典型数字滤波器设计,即应用MATLAB设计工具从模拟原型直接变换成满足原定频域指标要求的数字滤波器。3 .4各种设计方法的MATLAB实现3.4.1 基于模拟低通原型的MATLAB实现通过模拟低通原
32、型滤波器进行数字带通设计程序:fp=480 %模拟低通通带上限频率fs=520 %模拟低通阻带下限频率wp=2*pi*fp %模拟低通通带上限角频率ws=2*pi*fs %模拟低通阻带下限角频率rp=3 %通带波动rs=20 %阻带衰减%巴特沃斯模拟低通原型滤波器设计n,wn=buttord(wp,WS,rp ,rs,s)z,p,k=buttap(n) %模拟低通原型零、极点系数b1,a1=zp2tf(z,p,k) %零、极点系数转换为传递函数%巴特沃斯模拟低通原型滤波器频率响应hl,w1=freqs(b1,a1)mag1=abs(h1)模拟低通原型滤波器幅频特性曲线subplot(221);
33、semilogx(w1,mag1)fw=40 %模拟带通滤波器带宽频率bw=2*pi*fw %模拟带通滤波器带宽角频率由模拟低通原型变换为模拟带通滤波器b2,a2=lp2bp(b1,a1,wn,bw) %模拟带通滤波函数系数巴特沃斯模拟带通滤波器频率响应h2,w2= freqs(b2,a2)mag2 =abs(1l2)模拟带通滤波器幅频特性曲线(db)subplot(222);plot(20*log10(mag2)冲击响应不变法进行离散化设计fo=2000 %采样频率bz,az=impinvar(b2,a2,2000) %数字带通滤波函数系数巴特沃斯型数字带通滤波器频率响应hz,w= freq
34、z(bz,az)magz=abs(hz)phz=unwrap(angle(hz)subplot(223);plot(magz) %数字带通滤波器幅频特性曲线subplot(224);flot(plot) %数字带通滤波器相频特性曲线3.4.2 基于合适类型模拟滤波器的MATLAB实现通过合适类型模拟滤波器进行数字带通设计程序fp= 480,520;fs=450,550 %模拟通带、阻带频率wp=480,520*pi*2 %模拟通带角频率ws=450,550*pi*2 %模拟阻带角频率rp=3;rs=20 %通带波动、阻带衰减巴特沃斯型模拟带通滤波器设计n,wn=buttord (wp,ws,r
35、p,rs,s)b,a=butter(n,wn,s) %模拟带通滤波函数系数巴特沃斯型模拟带通滤波器频率响应ha,w= freqs(b,a)ma=abs(ha);pha=unwrap(angle(ha)subplot(421);plot(w/(2*pi),ma) %模拟幅频曲线subplot(423);plot(w/(2 pi),pha) %模拟相频曲线冲击响应不变法进行离散化设计fo=5000 %采样频率bn,an=impinvar(b,a,5000) %数字带通滤波函数系数巴特沃斯型数字带通滤波器频率响应hz,w=freqz(bn,an)mz=abs(hz);phz=unwrap(angle
36、(hz)subplot(422);plot(w,mz) %数字滤波器幅频曲线subplot(424);plot(w,phz) %数字滤波器相频曲线hi=impz(bn,an) %数字滤波器冲击响应subplot(425),plot(hi) %冲击响应曲线n=0:300;t=n/foxl=2*square(2*pi*500*t) %500Hz方波信号subplot(426);plot(x1) %500Hz方波波形yi=conv(hi,x1) %时域卷积输出subplot(427);plot(yi) %卷积输出波形y1=filter(bn,an,x1) %数字滤波函数输出subplot(428);
37、plot(y1) %数字滤波器输出波形3.4.3 基于直接原型变换法的MATLAB实现数字带通滤波器直接设计程序fp= 480,520;fs=450,550 %模拟通带、阻带频率rp=3;rs=20 %通带波动、阻带衰减fo=10000 %采样频率%频率指标变换wp=2*pi*fp/f0 %数字通带频率ws=2*pi*fs/fo %数字阻带频率%切比雪夫1型数字带通滤波器直接设计n,wn=cbeblord(wp/pi,ws/pi,rp,rs)b,a=chebyl(n,rp,wn) %数字带通滤波器系数%切比雪夫1型数字带通滤波器频率响应h,w= freqz(b,a,128,10000)mag=
38、abs(h;pha=unwrqp(angle(h)subplot(321);plot(w,mag) %幅频曲线subplot(322);plot(w,pha) %相频曲线hi=impz(b,a) %冲击响应subplot(324);plot(hi) %响应曲线n=0:500;t=n/fcx1=2*square(2*pi*500*t) %500Hz方波信号subplot(323);plot(t,x1) %500Hz方波波形yi=conv(hi,x1) %时域卷积输出subplot(326);plot(yi) %卷积输出波形y1=filter(b,a,x1) %数字滤波函数输出subplot(32
39、5); stem(y1) %数字滤波器输出波形总结: 基于MATLAB的信号处理工具箱为数字滤波器设计带来了全新的实现手段,设计快捷方便,仿真波形直观。上述三种设计方案均可实现设计指标,但以直接原型变换法最为简便。实际应用中,数字滤波器也可以对连续时间信号进行处理,但需要先对连续信号进行A/D变换,经数字滤波后,再经D/A转换得到所需要的连续信号。参考文献1倪养华,王重玮编著, 数字信号处理与实现,上海:上海交通大学出版社,1998。2 施阳,MATLAB语言工具箱,西安:西北工业大学出版社,1999。3吴湘淇、肖熙、郝晓莉, 信号系统与信号处理的软硬件实现,北京:电子工业出版社,2003。4张葛祥、李 娜,MATLAB仿真技术与应用,北京:清华大学出版社,2003。5 陈桂明,应用MATLAB语言处理数字信号与数字图像,北京:科学出版社,2001。6 陈怀琛, 数字信号处理教程-MATLAB释义与实现,北京:电子工业出版社,2005。7丛玉良、王宏志,数字信号处理及其MATLAB实现,电子工业出版社,2005.7。8谷萩隆嗣,数字滤波器与信号处理,科学出版社,2003.9。9薛年喜,MATLAB在数字信号处理中的应用,清华大学出版社,2003.11.1。- 18 -