实验五 基于Matlab的数字滤波器设计
实验目的:加深对数字滤波器的常用指标和设计过程的理解。
实验原理:低通滤波器的常用指标如下所述,其典型规格如下:
1pG(ejw)1p,wwpjwG(e),wwss
通带边缘频率:
pp 阻带边缘频率:s
p20log10(1p)(dB)通带起伏: 通带峰值起伏:
阻带起伏: s 最小阻带衰减:s20log10(s)(dB)
数字滤波器有IIR和FIR两种类型,他们的特点和设计方法不同。
一、窗函数法设FIR滤波器
在Matlab中产生窗函数十分简单:
(1) 矩形窗
调用格式:w=boxcar(n) ,根据长度n产生一个矩形窗w。
(2) 三角窗
调用格式:w=triang(n) ,根据长度n产生一个三角窗w。
(3)汉宁窗
调用格式:w=hanning(n) ,根据长度n产生一个汉宁窗w。
(4)汉明窗
调用格式:w=hamming(n) ,根据长度n产生一个汉明窗w。
(5)布莱克曼窗
调用格式:w=Blackman(n) ,根据长度n产生一个布莱克曼窗w。
基于窗函数的FIR滤波器设计利用Matlab提供的函数firl来实现。
调用格式:firl(n,wn,’ftype’,Window),n为阶数,wn是截止频率(如果输入是形如[w1 w2]的矢量时,本函数将设计带通滤波器,其通带为w1 Window=boxcar(8); b=fir1(7,0.4,Window); freqz(b,1); Window=blackman(80; b=fir1(7,0.4,Window); freqz(b,1); 2、设计线性相位带通滤波器,其长度N=15,上下边带截止频率分别为w1=0.3,w2=0.5 Window=blackman(16); B=firl(15,[0.3 0.5],Window); Freqz(b,1); p0.2,Rp0.25dB,a0.3,As50dB3、设计指标为,的底通滤波器。 见课本P197。 二、IIR滤波器的实现 (1)脉冲响应不变法设计数字ButterWorth滤波器 调用格式:[bz,az]=impinvar(b,a,Fs),再给定模拟滤波器参数b,a和取样频率Fs的前提下,计算数字滤波器的参数。两者的冲激响应不变,即模拟滤波器的冲激响应按Fs取样后等同于数字滤波器的冲激响应。 (2)利用双线性变换法设计数字滤波器ButterWorth滤波器 调用格式: [bz,az]=bilinear(b,a,Fs) ,根据给定的分子b,分母系数a和取样频率Fs,根据双线性变换将模拟滤波器变换成离散滤波器,具有分子系数向量bz和分母系数向量az 4、采样频率为1Hz,通带临界频率 fp0.2Hz,通带内衰减小于1dB( p1);阻带 临界频率fs0.3Hz,阻带内衰减大于25dB(s25)。设计一个数字滤波器满足以上参数。 %直接设计数字滤波器 [n,wn]=buttord(0.2,0.3,1,25); [b,a]=butter(n,wn); freqz(b,a,512,1); %脉冲响应不变发设计数字滤波器 [n,wn]=buttord(0.2,0.3,1,25,'s'); [bz,az]=impinvar(b,a,1); [b,a]=butter(n,wn,'s'); freqz(b,a) freqz(bz,az,512,1); %双线性变换法设计ButterWorth数字滤波器 [n,wn]=buttord(0.2,0.3,1,25,'s'); [b,a]=butter(n,wn,'s'); freqz(b,a); [bz,az]=bilinear(b,a,1); freqz(bz,az,512,1); 实验内容:利用Matlab编程设计一个数字带通滤波器,指标要求如下: p10.45,p20.65,通带边缘频率:通带峰值起伏: p1(dB)) 阻带边缘频率:,s10.3,s20.75,最小阻带衰减:,s40(dB)。 分别用IIR和FIR两种数字滤波器类型进行设计。 实验要求:给出IIR数字滤波器参数和FIR数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。 参考程序: (1) IIR数字滤波器实现(巴特沃什) %Design of a Butterworth Bandpass Digital Filter ws=[0.3 0.75];wp=[0.45 0.65];rp=1;rs=40; %Estimate the Filter Order [n1,wn1]=buttord(wp,ws,rp,rs); %Design the Filter [num,den]=butter(n1,wn1); [g,w,pha]=gain(num,den); %Plot the gain and phase response subplot(1,2,1); plot(w/pi,g); grid; axis([0 1 -60 5]); ylabel('Gain in dB'); title('巴特沃什带通滤波器增益响应'); subplot(1,2,2); plot(w/pi,pha); grid; xlabel('\\omega/\\pi'); title('巴特沃什带通滤波器相位响应'); xlabel('\\omega/\\pi'); ylabel('phase'); 子程序 function[g,w,pha]=gain(num,den) %Computes the gain function in dB of a %transfer function at 256 equally spaced points %on the unit circlr w=0:pi/255:pi; h=freqz(num,den,w); g=20*log10(abs(h)); pha=angle(h); 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务