Matlab滤波器设计与滤波器特性分析(sptool、filterdesigner)
3.1 实验目的
1、 掌握 Matlab 下滤波器设计工具(fdatool)的使用方法。
2、 掌握 IIR 滤波器设计方法与 FIR 滤波器设计方法。
3、 了解 IIR 滤波器设计与 FIR 滤波器设计方法的差异。
4、 掌握滤波器特性分析的方法。
5、 了解Matlab中sptool工具的使用方法。
3.2 实验原理
本实验利用Matlab 的工具 fdatool 完成,请仔细阅读 Matlab 中滤波器设计工具箱 fdatool的联机帮助。 IIR 与 FIR 滤波器设计的原理请参考课程内容。 由于最新版Matlab中已经删除了fdatool,所以以下实验滤波器设计使用的是filterDesigner。
信号产生、信号处理、信号频谱显示仍然使用sptool。
界面如下:
3.3 实验内容
3.3.1 IIR滤波器设计
1、采样频率为1Hz,设计一个Chebyshev高通数字滤波器,其中通带临界频率 fp=0.3Hz ,通带内衰减小于 0.8dB ( ap= 0.8dB ),阻带临界频率 fs= 0.2Hz ,阻带内衰减大于20dB ( as= 20 dB )。求这个数字滤波器的传递函数 H(z),输出它的幅频特性曲线,观察其通带衰减和阻带衰减是否满足要求。
滤波器设计参数配置如下:
显示传递函数系数如下:
输出幅频特性曲线如下:
根据传递函数系数可以写出这个数字滤波器的传递函数 H(z):
从传递函数可以看出该滤波器阶数为4。根据幅频特性曲线中标出的两点的值可知,该滤波器在归一化频率为0.6π时,衰减为0.6173dB<0.8dB,归一化频率为0.4π时,衰减为30.6dB>20dB,所以满足设计要求。
2、采样频率为 1Hz,设计一个数字低通滤波器,要求其通带临界频率fp= 0.2Hz ,通带内衰减小于 1dB(ap = 1dB ),阻带临界频率 fs= 0.3Hz ,阻带内衰减大于 25dB(as= 25dB )。求这个数字滤波器的传递函数 H(z),输出它的幅频特性曲线。
①、首先用butterworth模型设计
显示传递函数系数如下:
输出幅频特性曲线如下:
同样根据传递函数系数可以写出这个数字滤波器的传递函数 H(z):
从传递函数可以看出该滤波器阶数为6。 根据幅频特性曲线中标出的两点的值可知,该滤波器在归一化频率为0.4π时,衰减为0.6371dB<1dB,归一化频率为0.6π时,衰减为25.37dB>25dB,所以满足设计要求。
②、使用chebyshev I型设计
显示传递函数系数如下:
输出幅频特性曲线如下:
根据传递函数系数可以写出这个数字滤波器的传递函数 H(z):
从传递函数可以看出该滤波器阶数为4。 根据幅频特性曲线中标出的两点的值可知,该滤波器在归一化频率为0.4π时,衰减为0.991dB<1dB,归一化频率为0.6π时,衰减为32.181dB>25dB,所以满足设计要求,并且有一定裕量。
观察butterworth模型和chebyshev I型设计的滤波器,首先最直观的差别在于幅频特性曲线和阶数:butterworth模型设计的低通滤波器幅频大小是单调递减的,而chebyshev I型设计的低通滤波器在通带上是有振荡的;并且前者的滤波器阶数为6,后者为4.这是因为chebyshev I型设计将精确度要求均匀地分布在整个通带内,这样使得其可以用较少地阶数就达到实验设计的要求。实验结果和理论分析一致。
3、设计 Butterworth 带通数字滤波器,其上下边带 1dB 处的通带临界频率分别为 20kHz 和30kHz( fp1=20kHz, fp2= 30kHz, ap= 1dB ),当频率低于 15kHz 时,衰减要大于 40dB(fs= 15kHz,as=40dB ),采样周期为 10μ s,求这个数字滤波器的传递函数 H(z),输出它的幅频特性曲线,观察其通带衰减和阻带衰减是否满足要求。
采样周期为10μ s,则采样频率为100000Hz
滤波器设计参数配置如下:
显示传递函数系数如下:
输出幅频特性曲线如下:
根据传递函数系数可以写出这个数字滤波器的传递函数 H(z):
从传递函数可以看出该滤波器阶数为14。 根据幅频特性曲线中标出的两点的值可知,该滤波器在归一化频率为0.4π时,衰减为0.73dB<1dB,0.6π时,衰减为0.63dB<1dB;归一化频率为0.3π时,衰减为40.4dB>40dB,所以满足设计要求。
3.3.2 FIR滤波器设计
1、用 Hanning 窗设计一个线性相位带通滤波器,其长度 N=15,上下边带截止频率分别为w1= 0.3Π , w2 = 0.5Π ,求 h(n),绘制它的幅频和相位特性曲线,观察它的实际 3dB和 20dB 带宽。如果 N=45,重复这一设计,观察幅频和相位特性的变化,注意长度 N变化对结果的影响。
①、N=15时,滤波器设计参数配置如下:
Hanning窗相关信息:
得到h(n)的波形如下:
输出幅频特性曲线(蓝色)和相频特性曲线(红色)如下:
由上图可以计算得出3dB带宽为0.5109-0.2880=0.2229(π rad/s),20dB带宽为0.6598-0.1354=0.5244(π rad/s);h(n)如前图所绘序列。
②、N=45时,得到h(n)的波形如下:
输出幅频特性曲线(蓝色)和相频特性曲线(红色)如下:
由上图可以计算得出3dB带宽为0.4789-0.3198=0.1591(π rad/s),20dB带宽为0.5437-0.2557=0.288(π rad/s);h(n)如前图所绘序列。
随着N的增加滤波器的过渡带衰减的更快,过渡带宽逐渐变窄,在通带范围内仍保持线性相位的特性,实际幅频特性更接近于理想带通滤波器,这是以牺牲滤波器的复杂程度(阶数)实现的。同时N增大带来阻带内出现更多的起伏振荡,但不能改变阻带最小衰减值。
2、改用矩形窗和 Blackman 窗,设计步骤(1)中的带通滤波器,观察并记录窗函数对滤波器幅频和相位特性的影响,比较这三种窗函数的特点。
①、选择矩形窗设计,N=15与N=45时的滤波器幅频和相位特性如下:
②、选择Blackman窗设计,N=15与N=45时的滤波器幅频和相位特性如下:
Hanning窗、矩形窗、blackman窗,这三种窗函数设计的滤波器都是随着N阶数增大,滤波器过渡带衰减的越快,更接近于理想的带通滤波器。但在通带范围内三种滤波器都能保持线性相位的特性,且阻带衰减保持不变。在N相同的情况下,矩形窗滤波器的过渡带相对更窄,阻带的衰减也更小。而blackman窗的滤波器衰减最大,过渡带最宽。这与三种窗对应的过渡带宽Δω分别为4π/N、8π/N、12π/N,最小阻带衰减-21dB、-44dB、-74dB的理论参数一致。一般来说N越大,滤波器实现的功能就越精准。
3、用 Kaiser 窗设计一个专用的线性相位滤波器。 N=40,理想的幅频特性如下图所示:
当 beta 值分别 4,6,8 时,设计相应的滤波器,比较它们的幅频和相位特性,观察并分析 beta 值不同的时候对结果有什么影响。
原本上图的多通带滤波器可以使用两个带通滤波器并联得到,但由于没有在filterdesigner里找到滤波器并联选项,所以使用一个低通滤波器、一个高通滤波器、一个带阻滤波器级联得到如上多通带滤波器。
高通滤波器、低通滤波器、带阻滤波器特性如下:
①、beta=4时,级联得到的滤波器幅频和相频特性:
②、beta=6时,级联得到的滤波器幅频和相频特性:
③、beta=8时,级联得到的滤波器幅频和相频特性:
使用Kaiser窗设计滤波器时,beta越大,过渡带带宽变大,阻带的衰减变大,而在通带范围内都能保持线性相位特性。显然对比beta=4,6,8三种情况得到的滤波器,beta=4时的滤波器最接近于理想状况。
3.3.3 滤波器特性分析
针对IIR滤波器设计实验内容中的三款滤波器(低通、高通和带通),采用基于blackman窗函数的FIR设计方法重新设计,比较用IIR与FIR方法得到的滤波器的幅频特性、相频特性、零极点、群延时、相位延时。
对比较的结论进行原理性解释。
①、Blackman设计高通滤波器
不断调节滤波器的阶数,观察幅频特性曲线,直到幅频特性满足设计要求。并且由于filterdesigner的截止频率处衰减定为6dB,所以不能直接把wc定为0.6。实验中wc设置为0.5,阶数为24,得到的滤波器满足设计的通带与阻带参数要求。FIR与IIR滤波器特性如下(前者为FIR,后者为IIR):
幅频特性:
相频特性:
零极点分布:
群延时:
相位延时:
②、Blackman设计低通滤波器
同样尝试阶数、直到满足设计要求。实验中选择阶数为28,wc为0.5。得到的滤波器满足设计的通带与阻带参数要求。FIR与IIR滤波器特性如下(前者为FIR,后者为IIR):
幅频特性:
相频特性:
零极点:
相位延时:
群延时:
②、Blackman设计带通通滤波器
同样尝试阶数、直到满足设计要求。实验中选择阶数为64,_c1为0.365,_c2=0.635。得到的滤波器满足设计的通带与阻带参数要求。FIR与IIR滤波器特性如下(前者为FIR,后者为IIR):
幅频特性:
相频特性:
零极点:
群延时:
相位延时:
对比FIR滤波器与IIR滤波器,首先很直观的区别在于,实现相同要求的滤波器,IIR所需要的阶数远小于FIR滤波器的阶数。从零极点图可以看到,FIR滤波器只有零点而没有极点,或者说极点全部位于z=0处,零点可以位于z平面任何位置,这和FIR滤波器理论相符。IIR滤波器极点全部分布在单位圆内,这保证了滤波器的稳定性。IIR滤波器单位圆上靠近极点的相位,即相近的频率,在幅频特性上表现为通带。这是因为靠近极点时H(z)分母接近于0,使幅频响应较大,表现为通带。相对应的,靠近零点,表现为阻带。
由于IIR滤波器用较小的阶数就能达到幅频响应要求,并且没有次峰的干扰,阻带衰减也很大,所以可以说IIR滤波器有着很好的幅频响应特性。相比而言,FIR虽然阶数高,但同时有着线性相位的优点。这也使得FIR滤波器处理的信号,相位改变只取决于ω。此外,线性相位特性使得群延时为常数,阶数为奇数时,群延时是滤波器取样间隔的整数倍;阶数为偶数时,群延时为整数倍取样间隔加上1/2取样间隔。
3.3.4 滤波器的实际运用
1)用Matlab产生信号x(t)=0.5+1.2sin(2πf_1t)+0.5cos(2πf_2t)+ω(t),其中f_1=50Hz,f_2=200Hz,ω(t)为高斯白噪声,采样频率f_s=1000Hz。观察其频谱特性。
编写信号代码:
f1=50;
f2=200;
fs=1000;
n=1:100000;
x=0.5+1.2*sin(2*pi*f1*n/fs)+0.5*cos(2*pi*f2*n/fs);
x=x+awgn(x,10,'measured');
打开sptool,导入x;
时域如下(前者为缩放x轴的图像):
频谱:
2)设计一个butterworth低通滤波器,通带边界频率为100Hz,阻带边界频率为150Hz,通带波纹不大于2dB,阻带衰减不小于50dB,观察所设计滤波器的幅频特性、相频特性、零极点、群延时和脉冲响应。
使用filterdesigner设计,幅频特性曲线(蓝色)和相频特性(红色)曲线如下:
零极点:
群延时:
脉冲响应:
3)用(2)中设计的滤波器对(1)中的信号进行滤波处理,并分析滤波前后信号的频谱变化。
使用应用滤波器工具:
滤波前后信号的频谱:
滤波器阻带截至位于归一化频率0.3π处,分析滤波前后频谱可见,该低通滤波器将归一化频率大于0.3π的高频成分基本滤除掉了。原信号为:x(t)=0.5+1.2sin(2πf_1t)+0.5cos(2πf_2t)+ω(t)
所以滤除的是f_2=200Hz的这部分分量,已经一些高频噪声。留下的0.5直流分量和f_1=50Hz的这部分分量。
4)用Kaiser窗设计一个能滤除(1)中信号x(t)的直流分量和f_1频率分量的滤波器,观察滤波前后的频谱变化。
要滤除直流分量与50Hz分量,所以可以选择设计一个高通滤波器,鉴于存在高频白噪声,所以这里选择设计一个200Hz中心频率的带通滤波器。
滤波器频谱:
滤波之后信号频谱:
滤波前后的时域特性:
观察滤波之后信号频谱,可以看到低频包括直流成分已经基本滤除,留下了200Hz成分。观察滤波前后的时域特性,可以明显看到0.5的直流分量被滤除了。
实验总结:
通过本次实验,学会了使用Matlab对信号进行处理,包括产生一个信号;输出一个信号的时域、频域特性;在信号上叠加一个高斯白噪声信号。熟悉了使用filterdesigner设计IIR与FIR滤波器,包括butterworth模型、chebyshev模型设计;hanning窗、kaiser窗、矩形窗设计滤波器。进一步了解了低通、带通、高通滤波器特性,以及使用多个滤波器级联产生多通带滤波器。
Matlab对滤波器特性显示非常方便,参数修改也很方便。这样可以在设计过程中不断地调整参数,来实现所要求的滤波器功能。并且,对于滤波器的零极点、冲激响应、系统函数系数的获得都很简单,这也提高了设计效率和对滤波器特性的分析效率。
巩固了FIR、IIR设计滤波器各自的优缺点,根据滤波器要求,选择合适的设计方法,进一步可以选择合适的窗函数、阶数等等。
更多推荐
所有评论(0)