MATLAB窗函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.3 实验原理 数字滤波器的设计是数字信号处理中的一个重要内容。数字滤波器设计包括FIR(有限单位脉冲响应)滤波器与IIR(无限单位脉冲响应)滤波器两种。 与IIR滤波器相比,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。设FIR滤波器单位脉冲响应h(n)长度为N,其系统函数H(z)为: H(z)是z-1的N-1次多项式,它在z平面上有N-1个零点,原点z=0是N-1阶重极点,因此H(z)是永远稳定的。稳定和线性相位特性是FIR滤波器突出的优点。 FIR滤波器的设计任务是选择有限长度的h(n)。使传输函数H( )满足技术要求。FIR滤波器的设计方法有多种,如窗函数法、频率采样法及其它各种优化设计方法,本实验介绍窗函数法的FIR滤波器设计。 窗函数法是使用矩形窗、三角窗、巴特利特窗、汉明窗、汉宁窗和布莱克曼窗等设计出标准响应的高通、低通、带通和带阻FIR滤波器。 一、firl函数的使用 在MA TLAB 下设计标准响应FIR滤波器可使用firl函数。firl函数以经典方法实现加窗线性相位FIR滤波器设计,它可以设计出标准的低通、带通、高通和带阻滤波器。firl函数的用法为: b=firl(n,Wn,/ftype/,Window) 各个参数的含义如下: b—滤波器系数。对于一个n阶的FIR滤波器,其n+1个滤波器系数可表示为:b(z)=b(1)+b(2)z-1+…+b(n+1)z-n。 n—滤波器阶数。 Wn—截止频率,0≤Wn≤1,Wn=1对应于采样频率的一半。当设计带通和带阻滤波器时,Wn=[W1 W2],W1≤ω≤W2。 ftype—当指定ftype时,可设计高通和带阻滤波器。Ftype=high时,设计高通FIR滤波器;ftype=stop时设计带阻FIR滤波器。低通和带通FIR滤波器无需输入ftype参数。 Window—窗函数。窗函数的长度应等于FIR滤波器系数个数,即阶数n+1。 二、窗函数的使用 在MATLAB下,这些窗函数分别为: 1.矩形窗:w=boxcar(n),产生一个n点的矩形窗函数。 2.三角窗:w=triang(n),产生一个n 点的三角窗函数。 当n为奇数时,三角窗系数为w(k)= 当n为偶数时,三角窗系数为w(k)= 3.巴特利特窗:w=Bartlett(n),产生一个n点的巴特利特窗函数。 巴特利特窗系数为w(k)= 巴特利特窗与三角窗非常相似。巴特利特窗在取样点1和n上总以零结束,而三角窗在这些点上并不为零。实际上,当n为奇数时bartlett(n)的中心n-2个点等效于triang(n-2)。 4.汉明窗:w=hamming(n),产生一个n点的汉明窗函数。 汉明窗系数为w(k+1)=0.54-0.46cos()k=0,…,n-1 5.汉宁窗:w=hanning(n),产生一个n点的汉宁窗函数。 汉宁窗系数为w(k)=0.5[1-cos( )] k=1,…,n 6.布莱克曼窗:w=Blackman(n),产生一个n点的布莱克曼窗函数。 布莱克曼窗系数为w(k)=0.42-0.5cos(2π )+0.8cos(4π )] k=1,…,n 与等长度的汉明窗和汉宁窗相比,布莱克曼窗的主瓣稍宽,旁瓣稍低。 7.凯泽窗:w=Kaiser(n,beta),产生一个n点的凯泽窗数,其中beta为影响窗函数旁瓣的β参数,其最小的旁瓣抑制α与β的关系为: 0.1102(α-0.87) α>50 β= 0.5842(α-21)0.4+0.07886(α-21) 21≤α≤50 0 α<21 增加β可使主瓣变宽,旁瓣的幅度降低。 8.契比雪夫窗:w=chebwin(n,r)产生一个n点的契比雪夫窗函数。其傅里叶变换后的旁瓣波纹低于主瓣r个db数。 4.4 实验内容 1.软件仿真实验:编写并调试MA TLAB程序,观察不同窗,不同类型滤波器不同点数等共4种FIR滤波器的h(n),并记录幅频特性和相频特性。 2.硬件实验:用窗函数法设计标准响应的FIR滤波器,在计算机上观察窗函数幅频特性、幅频特性和相频特性,然后下载到实验箱。用示波器观察输入输出波形,测试滤波器的幅频响应特性。 4.5 MA TLAB参考程序和仿真内容 %*******************************************************************% % mode: 模式(1--高通;2--低通;3--带通;4--带阻) %n: 阶数,加窗的点数为阶数加1 %fp: 高通和低通时指示截止频率,带通和带阻时指示下限频率 %fs: 带通和带阻时指示上限频率 %window:加窗(1--矩形窗;2--三角窗;3--巴特利特窗;4--汉明窗; % 5--汉宁窗;6--布莱克曼窗;7--凯泽窗;8--契比雪夫窗) %r: 代
表加chebyshev窗的r值和加kaiser窗时的beta值 %sample: 采样率 %h: 返回设计好的FIR滤波器系数 %*******************************************************************% % mode: 模式(1--高通;2--低通;3--带通;4--带阻) %n: 阶数,加窗的点数为阶数加1 %fp: 高通和低通时指示截止频率,带通和带阻时指示下限频率 %fs:
窗函数设计低通滤波器:
fp=1000; %fp: 高通和低通时指示截止频率,带通和带阻时指示下限频率
fc=1200;
as=100; %实际阻带纹波
ap=1; %实际通带纹波
fs=22000; %fs: 带通和带阻时指示上限频率
wp=2*fp/fs;
wc=2*fc/fs; %截止频率
N=ceil((as-7.95)/(14.36*(wc-wp)/2))+1; %滤波器长度
beta=0.1102*(as-8.7);
window=Kaiser(N+1,beta); %凯泽窗:w=Kaiser(n,beta),产生一个n点的凯泽窗数,其中beta为影响窗函数旁瓣的β参数,其最小的旁瓣抑制α与β的关系为: 0.1102(α-0.87) α>50 β= 0.5842(α-21)0.4+0.07886(α-21) 21≤α≤50 0 α<21 增加β可使主瓣变宽,旁瓣的幅度降低。%
b=fir1(N,wc,window); %b—滤波器系数。对于一个n阶的FIR滤波器,其n+1个滤波器系数可表示为:b(z)=b(1)+b(2)z-1+…+b(n+1)z-n。%
freqz(b,1,512,fs);
高通滤波器: fs=22000; Wp=2*5000/fs; Ws=2*4800/fs; Ap=1; As=100; N=ceil(8*pi/(Wp-Ws))+1; N =N+mod(N+1,2)+1; Wc=(Wp+Ws)/2/pi; h=fir1(N,Wc,'high'); omega=linspace(0,pi,512); fre qz(h,1,omega); 带通滤波器: fs=22000; Wp1=2*1200/fs; Wp2=2*3000/fs; Wc1=2*1000/fs; Wc2=2*3200/fs; Ap=1; As=100; W1=(Wp1+Wc1)/2; W2=(Wp2+Wc2)/2; wdth=min((Wp1-Wc1),(Wc2-Wp2)); N=c eil(11*pi/wdth)+1; b = fir1(N,[W1 W2]); freqz(b,1,512,fs) 双线性法设计低通滤波器: fp=1000; fc=1200; as=100; ap=1; fs=22000; wp=2*fp/fs; wc=2*fc/fs; %归一化截止频率 [n,wn]=ellipord(wp,wc,ap,as);%求数字滤波器的最小阶数和归一化截止频率 [b,a]=ellip(n,ap,as,wn);%求传递函数的分子分母系数 freqz(b,a,512,fs);