窗函数法设计滤波器.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
窗函数法设计滤波器

实验 用实验目的实验内容和要求。窗口长度N =15,33。要求在两种窗口长度情况下,分别求出,打印出相应的幅频特性和相频特性曲线,观察3dB带宽和20dB带宽。总结窗口长度N 对滤波器特性的影响。 设计低通FIR数字滤波器时,一般以理想低通滤波特性为逼近函数,即 其中 ,,用四种窗函数设计线性相位低通滤波器,绘制相应的幅频特性曲线,观察3dB带宽和20dB带宽以及阻带最小衰减,比较四种窗函数对滤波器特性的影响。 实验方法、步骤及结果测试,则其对应的单位脉冲响应为 (4.1) 窗函数设计法的基本原理是用有限长单位脉冲响应序列逼近。由于往往是无限长序列,而且是非因果的,所以用窗函数将截断,并进行加权处理,得到: (4.2) 就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数为 (4.3) 式中,N为所选窗函数的长度。 我们知道,用窗函数法设计的滤波器性能取决于窗函数的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见表4.1。 表1 各种窗函数的基本参数 窗函数 旁瓣峰值幅度/dB 过渡带宽 阻带最小衰减/dB 矩形窗 -13 4π/N -12 三角形窗 -25 8π/N -25 汉宁窗 -31 8π/N -44 哈明窗 -41 8π/N -53 不莱克曼窗 -57 12π/N -74 凯塞窗(α=7.865) -57 10π/N -80 这样选定窗函数类型和长度N之后,求出单位脉冲响应,并按照式(4.3)求出。是否满足要求,要进行演算。一般在尾部加零使长度满足2的整数次幂,以便用FFT计算。如果要观察细节,补零点数增多即可。如果不满足要求,则要重新选择窗函数类型和长度N ,再次验算,直至满足要求。 如果要求线性相位特性,则还必须满足 根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。要根据所设计的滤波特性正确选择其中一类,例如,要设计线性相位低通特性,可以选择这一类,而不能选择这一类。 主程序框图如图4.1所示。其中幅度特性要求用dB表示。 设 画图时,用打印幅度特性。第k点对应的频率。为使曲线包络更接近的幅度特性曲线,DFT变换区间要选大些。例如窗口长度N=33时,可通过在末尾补零的方法,使长度变为64,再进行64点DFT,则可以得到更精确的幅度衰减特性曲线。 下面给出MATLAB主程序: %实验四,用窗函数法设计FIR数字滤波器 b=1; close all; i=0; while(b); temp=menu(选择窗函数长度N,N=10,N=15,N=20,N=25,N=30,N=33,N=35,N=40,N=45,N=50,N=55,N=60,N=64); menu1=[10,15,20,25,30,33,35,40,45,50,55,60,64]; N=menu1(temp); temp=menu(选择逼近理想低通滤波器截止频率Wc,Wc=pi/4,Wc=pi/2,Wc=3*pi/4,Wc=pi,Wc=0.5,Wc=1.0,Wc=1.5,Wc=2.0,Wc=2.5,Wc=3.0); menu2=[pi/4,pi/2,3*pi/4,pi,0.5,1,1.5,2,2.5,3]; w=menu2(temp); n=[0:(N-1)]; hd=ideal(w,N); %得到理想低通滤波器 k=menu(请选择窗口类型:,boxcar,hamming,hanning,blackman); if k==1 B=boxcar(N); string=[Boxcar,N=,num2str(N)]; else if k==2 B=hamming(N); string=[Hamming,N=,num2str(N)]; else if k==3 B=hanning(N); string=[Hanning,N=,num2str(N)]; else if k==4 B=blackman(N); string=[Blackman,N=,num2str(N)]; end end end end h=hd.*(B

文档评论(0)

docman126 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档