《基于MATLAB环境的数字滤波器设计.doc》由会员分享,可在线阅读,更多相关《基于MATLAB环境的数字滤波器设计.doc(46页珍藏版)》请在三一办公上搜索。
1、基于MATLAB环境的数字滤波器设计摘 要传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。本文介绍了一种利用MATLAB信号处理工具箱(Signal Processing Toolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。在本文中,我们分别研究了在MATLAB环境下IIR数字滤波器的典型设计和完全设计等方法。典型设计是先按一定规则将给出的数字滤波器的技术指标转换成模拟低通滤波器的技术指标,据此产生模拟滤波器原型,然后把模
2、拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器,最后再把模拟滤波器转换成数字滤波器。完全设计方法中我们利用函数直接设计出低通、高通、带通和带阻滤波器。对于FIR数字滤波器的设计,可以根据所给定的频率特性直接设计,文中采用的设计方法是窗函数法。我们给出了一个用窗函数法设计的带阻滤波器实例与MATLAB程序仿真。本文根据IIR滤波器和FIR滤波器的特点,在MATLAB坏境下分别用双线性变换法设计IIR和用窗函数设计FIR数字滤波器,并对采集的语音信号进行分析,最后给出了IIR和FIR对语音滤波的效果。关键词:数字滤波器 ,MATLAB ,IIR, FIR Based on MATLAB e
3、nvironment digital filter designABSTRACTTraditional digital filter design process complex, the computation work load is big, the filter characteristic adjustment difficulty, has affected its application. This article introduced one kind using the MATLAB signal processing toolbox (Signal Processing T
4、oolbox) the fast effective design the conventional numeral filter design method which is composed by software.Using the MATLAB design filter ,may contrast the design request and the filter characteristic adjustment parameter as necessary,direct-viewing is simple, enormous reduced the work load, is a
5、dvantageous optimization which designs to the filter.In this thesis the typical and complete disigns under MATLAB are studied.The technical parameters from digital filters that should be disigned,and then transformed into the analog parameters of a low-pass analog filter prototype.The prototype is c
6、onverted into the analog low-pass,high-pass,band-pass and the band-stop filters respeetively,Which are transformed into the digital ones.The complete design uses the given functions and releases the low-Pass,high-pass,band-pass and the band-stop filters direetly. As for the FIR filter, we can design
7、 it directly based on the giving frequency, in the paper it uses the design of the window function. we are given a window function method with band-stop filter design examples with MATLAB simulation program. This article according to the IIR filter and the FIR filter characteristic, uses the bilinea
8、rity method of transformation under the MATLAB bad boundary to design IIR and to design the FIR numeral filter separately with the window box number, and carries on the analysis to the gathering pronunciation signal, and finally gives IIR and FIR to the pronunciation filter effect.Key words: Digital
9、 filter,MATLAB ,IIR ,FIR 目 录前言1第1章 数字滤波器及MATLAB语言概述21.1数字滤波器概述21.1.1数字滤波器的定义21.1.2 数字滤波器的分类21.1.3常用滤波器的性能指标31.2 MATLAB概述6第2章 IIR滤波器的设计82.1 IIR滤波器设计的常用方法82.2双线性变换法设计IIR数字滤波器92.3 脉冲响应不变法102.4 完全滤波器的设计132.5 语音滤波应用18第3章 FIR数字滤波器的设计243.1 典型的窗函数243.2 FIR滤波器对语音信号的应用27结论32参考文献33谢辞35外文资料翻译36前言随着信息时代和数字世界的到来,
10、数字信号处理已成为今一门极其重要的学科和技术领域。数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测与参数估计等处理,在通信、图像、语音、雷达等许多领域都有着十分广泛的应用。尤其在图像处理、数据压缩等方面取得了令人瞩目的进展和成就。鉴于此,数字滤波器的设计就显得尤为重要。例如,在电力系统微机保护和二次控制中,很多信号的处理与分析都是基于对正弦基波和某些整次谐波的分析,而在系统电压电流信号(尤其是故障舜变过程)中各种复杂成分,所以滤波器一直是电力系统二次装置的关键部件。目前微机保护和二次信号处理软件主要是采用的数字滤波器。目前数字滤波器的设计有许多现成的高级语言设计程序,但他们都存在设计效
11、率低,不具有可视图形,不便于参数修改等缺点,而MATLAB的FDATool工具为数字滤波器的研究和应用提供了一个直观、高效、便捷的利器。它以矩阵运算为基础,把计算、可视化、仿真设计融合到一个交互式的工作环境中。尤其是MATLAB工具箱使各个领域的研究人员可以直观方便地进行科学研究和工程应用。其中的信号处理、图像处理等工具箱为数字滤波研究的蓬勃发展提供了有力的工具。本文介绍了一种基于MATLAB环境下对数字理滤波器进行设计与仿真的方法。在基于MATLAB环境的数字滤波器的设计过程中,MATLAB工具箱提供了几种模拟滤波的原型产生函数贝塞尔低通模拟滤波器原型,巴特沃斯滤波器原型,切比雪夫(型、型)
12、滤波器原型,椭圆滤波器原型等不同的模拟滤波器原型;模拟低通滤波器原型向低通、高通、带通、带阻的转变函数;从模拟滤波器向数字滤波器转化的双线性变换和冲激响应不变法;模拟数字IIR滤波器阶数选择函数以及数字滤波器直接设计函数等。这一整套设计函数给在MATLAB中设计IIR数字带来了极大的方便。利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大地减轻了工作量,有利于滤波器设计的最优化。 第1章 数字滤波器及MATLAB语言概述1.1数字滤波器概述1.1.1数字滤波器的定义数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数
13、字量,其输出是经过变换的另一组数字量。因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。数字滤波器,输入输出均为数字信号,通过一定的运算关系,改变输入信号中所含频率成分的相对比例,或则滤除某些频率成分的器件。对于数字滤波器而言,若系统函数为H(z),其脉冲响应为h(n),输入时间序列为x(n),则它们在时域内的关系式如下:y(n)=h(n)x(n) (1-1)在Z域内,输入和输出存在如下关系: Y(z)= H(z)X(z) (1-2)式中,X(z)、Y(z)分别为x(n)和y(n)的Z变换。在频域内,输入和输出则
14、存在如下关系:Y(j)=H(j)X(j) (1-3)式中,H(j)是数字滤波器的频率特性;X(j)Y(j)分别为x(n)和y(n)的频谱,而为数字角频率。 1.1.2 数字滤波器的分类数字滤波器可以有很多种分类方法,但总体上可分为两大类。一类称为经典滤波器,即一般的滤波器,其特点是输入信号中的有用成分和希望滤除的成分占用不同的频带,通过合适的选频滤波器可以实现滤波。例如,若输入信号中有干扰,信号和干扰的频带互不重叠,则可滤出信号中的干扰得到纯信号。但是,如果输入信号中信号和干扰的频带相重叠,则干扰就不能被有效的滤出。另一类称为现代滤波器,如维纳滤波器、卡尔曼滤波器等,其输入信号中有用信号和希望
15、滤除的成分频带重叠。对于经典滤波器,从频域上也可以分为低通、高通、带通和带阻滤波器。从时域特性上看,数字滤波器还可以分为有限冲激响应数字滤波器(FIR)和无限冲激响应数字滤波器(IIR)。对于有限冲激响应数字滤波器(FIR),其输出y(n)只取决于有限个过去和现在的输入,x(n),x(n-1),x(n-m),滤波器的输入输出关系可表示为y(n)= (1-4)对于无限冲激响应数字滤波器(IIR),它的输出不仅取决于过去和现在的输入,而且还取决于过去的输出,其差分方程为y(n)+= (1-5)该差分方程的单位冲激响应是无限延续的。 1.1.3常用滤波器的性能指标滤波器性能一般用系统频率特性来说明,
16、常用的性能指标主有以下三个参数:1. 幅度平方函数 (1-6)该性能指标主要用来说明系统的幅频特性。2. 相位函数 (1-7)其中: (1-8)该指标主要用来说明系统的相位特性。3. 群延时 (1-9)定义为相位对角频率导数的负值,说明了滤波器对不同的频率成分的平均延时。当要求在通带内的群延迟是常数时,滤波器相位响应特性是线性的。实际设计中所能得到的滤波器的频率特性与理想滤波器的频率特性之间存在着一些显著的差别,现以低通滤波器的频率特性为例进行说明。1.理想低通滤波器的特性:设滤波器输入信号为,信号中混入噪音,它们有不同的频率成分。滤波器的单位脉冲响应为。则理想滤波器输出为: (1-10)即噪
17、音信号被滤除,而信号无失真只有延时和线性放大。对上式作傅里叶变换得: (1-11)假定噪音信号被滤除,即: (1-12)整理得:h(t)t (1-13)图1-1 理想低通滤波器频率特性 图1-2 理想滤波器的单位脉冲响应假定信号频率成分为:,噪音频率成分为。则完成滤波的理想低通滤波器特性是: (1-14)即: (1-15) (1-16)系统的单位脉冲响应为: (1-17)理想低通滤波器的频率特性如图1-1所示,单位脉冲响应的波形如图1-2所示。理想滤波器具有非因果、无限长的单位脉冲响应和不连续的频率特性,要用稳定的线性时不变(LTI)系统来实现这样的特性是不可能的。工程上是用脉冲响应为有限长的
18、、因果的、稳定的线性时不变系统或具有连续频率特性的线性时不变系统来逼近理想特性。在满足一定的误差要求的情况下来实现理想滤波特性。因此实际的滤波器的频率特性如图1-3所示。通 带阻带过度带渡带图1-3实际滤波器频率特性 其中:截止频率 阻带起始频率过渡带宽在通带内幅度响应以的误差接近于1,即: (1-18)为阻带起始频率,在阻带内幅度响应以小于的误差接近于零,即: (1-19)为了使逼近理想低通滤波器的方法成为可能,还必须提供一带宽为的不为零的过渡带。在这个频带内,幅度响应从通带平滑的下落到阻带。1.2 MATLAB概述MATLAB是美国MathWorks公司开发的一种功能极其强大的高技术计算语
19、言和内容极其丰富的软件库,集数值计算、矩阵运算和信号处理与显示于一身。该软件最初是由美国教授Cleve Moler创立的。1980年前后,他在教线性代数课程时,发现用其他高级语言编程时极不方便,便构思开发了MATLAB,即矩阵实验室(Matrix Laboratory)。该软件利用了当时代表数值线性代数领域最高水平的EISPACK和LINPACK两大软件包,并且利用Fortran语言编写了最初的一套交互式软件系统,MATLAB的最初版本便由此产生了。 最初的MATLAB由于语言单一,只能进行矩阵的运算,绘图也只能用原始的描点法,内部函数只有几十个,因此功能十分简单。1984年该公司推出了第一个
20、MATLAB的商业版,并用C语言作出了全部改写。现在的MATLAB程序是MathWorks公司用C语言开发的,第一版由steve Bangert主持开发编译解释程序,Steve Kleiman完成图形功能的设计,John Little和Cleve Moler主持开发了各类数学分分析的子模块,撰写用户指南和大部分的M文件。接着又添加了丰富的图形图像处理、多媒体功能、符号运算和与其它流行软件的接口功能,使MATLAB的功能越来越强大。MTALAB系统主要由以下五个部分组成:(1)MATALB语言体系。 MATLAB是高层次的矩阵数组语言,具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语
21、言特性。利用它既可以进行小规模端程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。(2)MATLAB工作环境 。这是对MATLAB提供给用户使用的管理功能的总称。包括管理工作空间中的变量据输入输出的方式和方法,以及开发、调试、管理M文件的各种工具。(3)图形句相系统 。这是MATLAB图形系统的基础,包括完成2D和3D数据图示、图像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对象进行特性控制的低层MATLAB命令,以及开发GUI应用程序的各种工具。(4)MATLAB数学函数库。这是对MATLAB使用的各种数学算法的总称。包括各种初等
22、函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法。(5)MATLAB应用程序接口(API)。这是MATLAB为用户提供的一个函数库,使得用户能够在MATLAB环境中使用C程序或FORTRAN程序,包括从MATLAB中调用于程序(动态链接),读写MAT文件的功能。 除此之外,MATLAB系统还具有如下特点:(1)具有易学易用的语言体系;(2)具有交互式的工作环境;(3)具有多层面的图像处理系统;(4)具有丰富高效的MATLAB工具箱;(5)具有便利的程序接口(API);(6)应用领域广泛;(7)嵌入了面向对象编程语言。第2章 IIR滤波器的设计2.1 IIR滤波器设计的常用方法IIR数字滤波
23、器的系统函数为: (2-1)IIR滤波器设计就是根据性能指标要求,设计滤波器的分子和分母多项式。IIR数字滤波器的设计通常借助于模拟滤波器原型,再将模拟滤波器转换为数字滤波器。模拟滤波器的理论和设计方法已发展得相当成熟,且有一些典型的模拟滤波器供我们选择,如巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器、贝塞尔(Bessel)滤波器等,这些典型的滤波器各有特点。本文采用经典设计法中的模拟滤波器变换法和完全设计函数法分别来设计数字滤波器。用MATLAB进行典型的数字滤波器的设计,一般步骤如下:(1)按一定规则将给出的数字滤波器的技术指标转
24、换成模拟低通滤波器的技术指标;(2)根据转换后的技术指标使用滤波器阶数选择函数,确定最小阶数N和固有频率Wn,根据选用的模拟低通滤波器的类型可分别用函数:buttord、cheb1ord、cheb2ord、ellipord等;(3)运用最小阶数N产生模拟滤波器原型,模拟低通滤波器的创建函数有:buttap、cheb1ap、cheb2ap、ellipap等;(4)运用固有频率Wn把模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器,可分别用函数lp2lp、lp2hp、lp2bp、lp2bs;(5)运用冲激响应不变法或双线性变换法把模拟滤波器转换成数字滤波器,分别用函数impinvar和bi
25、linear来实现。2.2双线性变换法设计IIR数字滤波器在MATLAB中,双线性变换法的调用函数是bilinear。其调用格式为:a. zd,pd,kd= bilinear(z,p,k,fs)b. zd,pd,kd= bilinear(z,p,k,fs,fp)c. numd,dend=bilinear(num,den,fs)d. numd,dend=bilinear(num,den,fs,fp)e. Aa,Bb,Cc,Dd=bilinear(A,B,C,D,fs)f. Aa,Bb,Cc,Dd=bilinear(A,B,C,D,fs,fp)zd,pd,kd=bilinear(z,p,k,fs)
26、是把模拟滤波器的零极点模型转换为数字滤波器的零极点模型,fs为采样频率,z,p,k分别为滤波器的零点、极点和增益;numd,dend=bilinear(num,den,fs)是把模拟滤波器的传递函数模型转换为数字滤波器的传递模型;Aa,Bb,Cc,Dd=bilinear(A,B,C,D,fs)是把模拟滤波器的状态方程模型转换为数字滤波器状态方程模型。例如,用双线性变换法设计一个巴特沃思数字低通滤波器,技术指标如下:通带截止频率=24k rad/s,阻带截止频率=28k rad/s,通带波纹系数=0.3dB, 阻带波纹系数=50dB,采样频率fs=20000Hz。 程序如下:N,Wn=butto
27、rd(wp,ws,Rp,Rs,s) %估计滤波器最小阶数z,p,k=buttap(N);Bap,Aap=zp2tf(z,p,k);b,a=lp2lp(Bap,Aap,Wn);bz,az=bilinear(b,a,fs)freqz(bz,az,Nn,fs) 程序在MATLAB环境下的运行及结果如图2-1所示:结果如下:N =11Wn =1.4892e+004bz = Columns 1 through 6 0.0110 0.1211 0.6055 1.8166 3.6333 5.0866 Columns 7 through 12 5.0866 3.6333 1.8166 0.6055 0.121
28、1 0.0110az = Columns 1 through 61.0000 2.7098 4.6379 5.2252 4.3685 2.7207 Columns 7 through 121.2885 0.4561 0.1181 0.0211 0.0023 0.0001图2-1 巴特沃思数字低通滤波器幅频-相频特性2.3 脉冲响应不变法 脉冲响应不变法就是要求数字滤波器的脉冲响应序列h(n)与模拟滤波器的脉冲响应的采样值相等,即h(n)= (2-2) 式中,T为采样周期。根据模拟信号的拉普拉斯变换与离散序列的Z变换之间的关系,我们知道 (2-3) 此式表明,的拉普拉斯变换在s平面上沿虚轴,按照
29、周期=2/T延拓后,按式z=,进行Z变换,就可以将Ha(s)映射为H(z)。事实上,用脉冲响应不变法设计IIR滤波器,只适合于Ha(s)有单阶极点,且分母多项式的阶次高于分子多项式阶次的情况。将Ha(s)用部分分式表示: Ha(s)=LTh= (2-4) 式中,LT代表拉普拉斯变换,为的单阶极点。将Ha(s)进行拉普拉斯反变换,即可得到= (2-5) 式中,u(t)是单位阶跃函数。则的离散序列(对它进行抽样):h(n)= (2-6)对h(n)进行z变换之后,可以得到数字滤波器的系统函数H(z)H(z)= (2-7) 对比Ha(s)与H(z),我们会发现:s域中Ha(s)的极点是,映射到z平面之
30、后,其极点变成了,而系数没有发生变化,仍为。因此,在设计IIR滤波器时,我们只要找出模拟滤波器系统函数Ha(s)的极点和系数,通过脉冲响应不变法,代入H(z)的表达式中,即可求出H(z),实现连续系统的离散化。但是脉冲响应不变法只适合于设计低通和带通滤波器,而不适合于设计高通和带阻滤波器。因为,如果模拟信号的频带不是介于之间,则会在的奇数倍附近产生频率混叠现象,映射到z平面后,则会在附近产生频率混叠现象。从而使所设计的数字滤波器不同程度的偏离模拟滤波器在附近的频率特性,严重时使数字滤波器不满足给定的技术指标。为此,希望设计的滤波器是带限滤波器,如果不是带限的,例如,高通滤波器、带阻滤波器,需要
31、在高通滤波器、带阻滤波器之前加保护滤波器,滤出高于折叠频率/T以上的频带,以免产生频率混叠现象。但这样会增加系统的成本和复杂性。因此,高通与带阻滤波器不适合用这种方法。在MATLAB中,脉冲响应不变法的调用函数是impinvar,其调用格式为:a. bz,az=impinvar(b,a,fs)b. bz,az=impinvar(b,a)c. bz,az=impinvar(b,a,fs,tol)该函数的功能是将分子向量为b、分母向量为a的模拟滤波器,转换为分子向量为bz、分母向量为az的数字滤波器。fs为采样频率,单位为Hz,默认值为1Hz。tol指误差容限,表示转换后的离散系统函数是否有重复的
32、极点。例如,用脉冲响应不变法设计一个契比雪夫1型数字低通滤波器,指标要求:通带截止频率=1000Hz,阻带截止频率=1200Hz,采样频率fs=5000Hz,通带衰减系数=0.3dB,阻带衰减系数=40dB。程序如下:wp=1000*2*pi;ws=1200*2*pi;fs=2500;Rp=0.3;Rs=40;N,Wn=cheb1ord(wp,ws,Rp,Rs,s); %估计滤波器最小阶数z,p,k=cheb1ap(N,Rp); %模拟滤波器函数引用A,B,C,D=zp2ss(z,p,k); %返回状态转移矩阵形式AT,BT,CT,DT=lp2lp(A,B,C,D,Wn); %频率转换b,a=
33、ss2tf(AT,BT,CT,DT); %返回传递函数形式 bz,az=impinvar(b,a,fs); %调用脉冲相应不变法H,W=freqz(bz,az); %返回频率响应plot(W*fs/(2*pi),abs(H); %画图grid;xlabel(frequency/Hz); ylabel(magnitude);N,WnN =11 Wn =6.2832e+003程序在MATLAB环境下的运行及结果如图2-2所示:图 2-2 契比雪夫型数字低通滤波器幅频特性曲线2.4 完全滤波器的设计在MATLAB信号处理工具箱提供了几个直接设计IIR数字滤波器的函数,所用到的函数有butter、ch
34、eby1、cheb2ord、ellipd以及besself等。Butter用来直接设计巴特沃思数字滤波器,cheby1用来直接设计切比雪夫型滤波器,cheb2ord用来设计切比雪夫型滤波器,ellipd用来设计椭圆滤波器,besself用来设计贝塞尔滤波器。完全滤波器的设计就是根据设计要求,直接调用函数来设计所需要的数字滤波器。主要函数的特点如下:1、设计Butterworth滤波器用函数butter(),可以设计低通、高通、带通和带阻的数字和模拟滤波器,其特性是通带内的幅度响应最大限度的平滑,但损失了截止频率处的下降斜度。2、设计Chebyshevl型滤波器用函数chebyl()。可以设计低
35、通、高通、带通和带阻的数字和模拟Chebyshevl型滤波器,其通带内为等波纹,阻带内为单调。Chebyshevl型滤波器的下降斜度比II型大,但其代价是通带内波纹较大。3、设计Chebyshev11型滤波器用函数cheby2()。可以设计低通、高通、带通和带阻的数字和模拟ChebyshevII型滤波器,其通带内为单调,阻带内等波纹。ChebyshevII型滤波器的下降斜度比I型小,但其阻带内波纹较大。4、设计椭圆滤波器用函数ellip(),与chebyl、cheby2类似,可以设计低通、高通、带通和带阻的数字和模拟滤波器。与Butterworth和Chebyshev滤波器相比,ellip函数
36、可以得到下降斜度更大的滤波器,得通带和阻带均为等波纹。一般情况下,椭圆滤波器能以最低的阶实现指定的性能指标。(1)以上几种函数在低通滤波器设计中的比较:设:Wp=30Hz,Ws=35Hz,Fs=100,Rp=0.sdB,Rs=4odB分别用巴特沃斯(Butterworth)滤波器、切比雪夫(chebyshev)滤波器、椭圆(Cauer)滤波器,程序设计如下:巴特沃斯低通滤波器:nl,Wnl=buttord(wp/(Fs/2),ws/(Fs/2),rp,rs,z);numl,denl=butter(nl,Wnl);切比雪夫I型低通滤波器:n2,Wn2=cheb1ord(wp/(Fs/2),ws/
37、(Fs/2),rp,rs,z):num2,den2=ehebyl(n2,rp,Wn2);切比雪夫II型低通滤波器:n3,Wn3=ehebZord(wp/(Fs/2),ws/(Fs/2),rp,rs,z);num3,den3=cheby2(n3,rp,Wn3):椭圆低通滤波器:n4,Wn4=ellipord(wp/(Fs/2),ws/(Fs/2),rp,rs,z):num4,den4=ellip(n3,rp,rs,Wn3);设计出的低通滤波器的频率响应如图2-3所示。图 2-3 低通数字滤波器频率响应 (a)Butterworth低通滤波器 (b)Chebyshevl型低通滤波器 (c)Cheb
38、yshevll型低通滤波器(d)椭圆低通滤波器(2)几种类型在高通滤波器设计中的比较:设:Wp=35Hz,Ws=30Hz,Fs=100,Rp=0.5dB,Rs=40dB分别用巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器。程序设计如下:butterworth高通滤波器:nl,Wnl=buttord(wp/(Fs/2),ws/(Fs/2),rp,rs,z);numl,denl=butter(nl,Wnl,high);chebyshevl高通滤波器:n2,Wn2=eheblord(wp/(Fs/2),ws/(Fs/2),rp,rs,z):n
39、um2,den2=chebyl(n2,rp,Wn2,high):chebyshevII高通滤波器:n3,Wn3=Cheb2ord(wp/(Fs/2),ws/(Fs/2),rp,rs,z):num3,den3=cheby2(n3,rp,Wn3,high):椭圆高通滤波器:n4,Wn4=ellipord(wp/(Fs/2),ws/(Fs/2),rp,rs,z);num4,den4=ellip(n4,rp,rs,Wn4,high):设计出的高通滤波器的频率响应如图2-4所示。图2-4 高通数字滤波器频率响应(a)Butterworth高通滤波器(b)ChebyshevI 型高通滤波器(c)Cheby
40、shevII型高通滤波(d)椭圆高通滤波器从频率响应图中可以看出:巴特沃斯滤波器具有单调下降的幅频特性,通带内平滑;切比雪夫I型滤波器的幅频特性在通带内有波动,阻带内单调;chebyshevII型滤波器的幅频特性在阻带内有波动,通带内单调;椭圆滤波器的选择性相对前三种是最好的,下降斜度比较大,通带和阻带内均为等波纹,同样的性能指标,椭圆滤波器可以最低的阶数来实现。这样根据不同的要求可以选用不同类型的滤波器。2.5 语音滤波应用1语音信号的采集:用一段语音,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。z1,fs,bits=wavread(1.wav
41、)运行结果:fs =44100bits =16wavread函数调用格式:y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。y,fs,nbits=wavread(file),采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。y=wavread(file,N),读取前N点的采样值放在向量y中。y=wavread(file,N1,N2),读取从N1点到N2点的采样值放在向量y中。2语音信号的频谱分析首先画出语音信号的时域波形z1=wavread(1.wav);plot(z1);图像输出如图2-5对语音信号进行频谱分析,在MATLAB中,可以
42、利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性z1=wavread(1.wav);y1=z1(1:8192);Y1=fft(y1);n=0:8191;plot(n,Y1);图像输出如图2-6 图2-5 信号时域波形 图 2-6 信号频谱分析图3. 根据语音信号的特点,设计出不同性能的数字滤波器,并用MATLAB进行仿真。根据语音信号的特点给出有关滤波器的性能指标:1)低通滤波器性能指标,fp=1000Hz,fc=1200 Hz, As=100dB,Ap=1dB;2)高通滤波器性能指标,fc=2800 Hz,fp=3000 Hz As=100dB,Ap=1dB;3)带通滤波器性能指标
43、,fp1=1200 Hz,fp2=3000 Hz,fc1=1000 Hz,fc2=3200 Hz,As=100dB,Ap=1dB。用IIR滤波器对其分析,最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。设计程序及仿真结果如下:1设计IIR低通滤波器滤波程序如下:clear;close allz1,fs,bits=wavread(1.wav)y1=z1(1:8192);Y1=fft(y1);fp=1000;fc=1200;As=100;Ap=1; ;Fs=8000;wc=2*fc/Fs;wb=2*fp/Fs;n,wp=cheb1ord(wc,wb,Ap,As);b,a=cheby
44、1(n,Ap,wp);figure(1);freqz(b,a);x=filter(b,a,z1);X=fft(x,8192);figure(2);subplot(2,2,1);plot(abs(Y1);axis(0,1000,0,1.0);title(滤波前信号频谱);subplot(2,2,2);plot(abs(X);axis(0,4000,0,0.03);title(滤波后信号频谱);subplot(2,2,3);plot(z1);title(滤波前信号波形);subplot(2,2,4);plot(x);title(滤波后信号波形);sound(x,fs,bits);仿真结果如图下:图 2-7 IIR数字低通滤波器幅频-相频特性图 2-8 滤波前后信号频谱和波形对比2设计IIR高通滤波器滤波程序设计如下:clear;close allz1,fs,bits=wavread(1.wav)y1=z1(1:8192);Y1=fft(y1);fc=2800 ;fp=3000 ;As=100;Ap=1; Fs=8000;wc=2*fc/Fs;wb=2*fp/Fs;n,wp=cheb1ord(wc,wb,Ap,As