《FIR数字滤波器的设计与matlab实现.ppt》由会员分享,可在线阅读,更多相关《FIR数字滤波器的设计与matlab实现.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、v第一部分:第一部分: v数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组(由模拟信号取样和量化的)数字量,其输出是经过变换(或说处理)的另一组数字量。v滤波器设计任务的中心就是求得系统函数。数字滤波器的系统函数最主要的特征有三个:幅度平方响应、相位响应和群延迟。 vIIR滤波器可以用较少的阶数获得较好的幅度响应,但由于其结构存在反馈,可能造成系统的不稳定,其优异幅度响应一般是以相位的非线性相位的非线性为代价的,非线性相位会引起频率色散。vFIR系统的最主要特性之一就是可以构成具有线性线性相位相位特性的滤波器。所谓线性相位特性是指滤波器对不同频率的
2、正弦波所产生的相移和正弦波的频率成直线关系。因此,在滤波器通带内的信号通过滤波器后,除了由相频特性的斜率决定的延迟外,可以不失真地保留通带以内的全部信号。vFIR数字滤波器严格的线性相位特性对于语音信号处理和数据传输是很重要的。 FIR DF的单位脉冲响应h(n)仅含有有限个(N个)非零值,是因果的有限长序列,该序列h(n)的Z变换为:10)()(NnnznhzHH(z)是Z-1的N-1阶多项式,在Z平面上有N-1个零点,在z=0处有N-1个重极点。如果h(n)满足下面的偶对称和奇对称条件,FIR滤波器将具有严格的线性相位特性。)1()()1()(nNhnhnNhnh对于h(n)为偶对称和奇对
3、称又分别分为列长N为偶数和奇数两种情况。因此共有以下四种类型的线性相位FIR DF.1. 线性相位特性线性相位特性偶对称情况偶对称情况h(n)=h(N-1-n) 由于由于则则)1()(nNhnhnNnnNnznNhznhzH1010)1()()(nNnNnNNnznhzznh10) 1()1(10)()(即即)()(1) 1(zHzzHN则有则有21)( )(21)()(21)()21()21(102/ ) 1() 1(101) 1(NnNnNnNnNnNnNzznhzzzznhzHzzHzH频响:频响:)21(cos)(| )()(10)21(NnnhezHeHNnNjezjj其求和项全为实
4、数其求和项全为实数)()()(jjeHeH即的形式幅度函数和表示成相位函数将,)()()(HeHj则)21()()21(cos)()(10NNnnhHNn其中 幅度函数幅度函数是标量函数,可正可负; 相位函数相位函数是的线性函数,且通过原点,即:具有严具有严格的线性相位特性格的线性相位特性。如图所示2.线性相位线性相位FIR滤波器的幅频特性滤波器的幅频特性对于中的各项相对于 对称的项相等。10)21(cos)()(NnNnnhH2/ ) 1(N将相等项合并,因将相等项合并,因N为奇数,余中间项为奇数,余中间项)21(Nh2/ )3(010)21(cos)(2)21()21(cos)()(NnN
5、nNnnhNhNnnhH故故令令 ,则有,则有nNm212/ ) 1(1cos)21(2)21()(NmmmNhNhH将上式记为)21()0(Nha2/ )3(0cos)()(NnnnaH(6-1-14)其中(6-1-15)(6-1-16)21,2, 1),21(2)( NnnNhna 因此该滤波器适合于设计任何关于因此该滤波器适合于设计任何关于 为偶对称特性频率的滤波器为偶对称特性频率的滤波器。2, 0 , 由于 对 皆为偶对称,所以幅度函数 对 也是偶对称。2, 0 ,2, 0 ,ncos)(H下表给出了上述4种类型的线性相位滤波器的相位响应、时域幅度响应和频域幅度响应的示意图。 FIR滤
6、波器的设计问题在于寻求一系统函数 ,使其频率响应 逼近滤波器要求的理想频率响应 。10)()(NnnznhzHjezjzHeH| )()()(jdeH 如果要求FIR滤波器具有线性相位特性,则h(n)必须满足上节所述的对称条件。1、 窗函数设计的基本方法窗函数设计的基本方法设计思想:从时域出发,设计h(n)使之逼近理想单位脉冲响应序列hd(n)设理想滤波器的单位脉冲响应为hd(n),则有deeHnhenheHjnjddjnndjd)(21)()()(6-2-1)(6-2-2)理想DF的频响是逐段恒定的,且在频带边界处有不连续点。因而所求得的 一般是无限长的,且是非因果的。)(nhd 要想得到一
7、个因果的有限长的滤波器h(n),最直接的方法是截断 ,或者说用一个窗口函数 对 进行加窗处理,即)(nhd)(nhd)( nw)()()(nwnhnhd(6-2-3)所以选择窗口函数的形状和长度是窗口函数法的关键。下面以理想低通滤波器为例说明其设计过程设理想低通滤波器的频率响应 为,ccajjdeeH0)()(jdeHc为滤波器的截止频率;a为延时常数 相应的单位脉冲响应为deenhccnjajd21)(anananancc)()(sin是一个以a为对称中心的偶对称的无限长的非因果序列。(6-2-4)(6-2-5) 要得到有限长的h(n),最简单的方法是用一长为N的矩形窗w(n)=RN(n)截
8、断hd(n)。 按照线性相位滤波器的要求,h(n)必须是偶对称的,如上图所示。对称中心必须等于滤波器的延时常数,即故有2/)1( Na2/)1()()()(NanRnhnhNd(6-2-6)图6-2-1 理想低通滤波器的单位脉冲响应及矩形窗截取2. 吉布斯(吉布斯(Gibbs)效应)效应 因频率响应是单位脉冲响应的傅立叶变换,故可求得矩形窗截取后滤波器的频率响应为jndNnjenheH)()(10上式为有限项,N越大,所设计DF与理想DF差别越小,误差就越小。但对于矩形窗截取还存在所谓吉布斯(Gibbs)效应,使得滤波器的特性很差,不能满足实际的需要。 下面从频域卷积的角度来分析由矩形窗所求得
9、的滤波器的频率响应。 由式 deWeHeHjjdj)()(21)()( (6-2-7)按复卷积定理有)()()(nnhnhdWeRj()jNjNnjnNjReeenReW11)()(10)2/sin()2/sin(21NeNjjReW)(设矩形窗的频率响应为 (6-2-8)2/sin()2/sin()(NWR上式中 为矩形窗的幅度响应,如下图所示 图6-2-2 矩形窗的幅度响应 主瓣主瓣旁瓣旁瓣旁瓣旁瓣Hedj()jdjdeHeH)()(ccdH01)(将理想低通滤波器的频率响应表示为 则(6-2-9)deWeHeHjRjdj)()()(21)(dWHeRdj)()(21将(6-2-8)式和(
10、6-2-9)式代入(6-2-7)式,得 H( )(jeHdWHHRd)()(21)(若用代表所设计的低通滤波器的幅度响应,则有 上式说明设计的滤波器的幅度响应是矩形窗函数的幅度响应与理想低通滤波器的幅度响应的卷积。 其过程如下图所示。(6-2-10)图 6-2-3矩形窗的卷积过程 加矩形窗处理后,对理想频率响应产生了两点影响:1)使理想频率特性不连续点=c 处,形成了 一 个过渡带, 过渡带的宽度等于矩形窗的频率 响应WR()的主瓣宽度=4/N ;2) 在截止频率c的两边=c 2/N 处(即过 渡带的两边),H()出现最大的肩峰值,肩峰 的两侧形成起伏振荡,其振荡幅度取决于旁瓣 的相对幅度,而
11、振荡的快慢,则取决于WR() 波动的快慢。若增加截取长度N,则在主瓣附近的窗的频率响应为 WNNNxxR( )si n(/)si n(/)si n(/)/si n2222该函数的性质:随着x加大(即N加大),函数曲线波动的 频率加快,主瓣幅度加高,旁瓣幅度也同 样加高,主瓣与旁瓣的相对比例保持不变。 这个相对比例是由sinx/x决定的, 也就是说是由矩形窗函数的形状决定的。 因而,当长度N增加时,只会减小过渡带宽(4/N ),而不会改变肩峰的相对值。 在矩形窗情况下,最大相对肩峰值为8.95%,N增加时,4/N减小,起伏振荡变密,但最大肩峰则总是8.95%,这就是吉布斯(Gibbs)效应。 w
12、 n( )hnd( ) 由于窗谱肩峰的存在,影响到H()通带的平坦和阻带的衰减,使阻带最小衰减只有21dB左右,因此在实际中,矩形窗很少采用。 为了消除吉布斯效应,取得较好频率特性,一般采用其他类型的窗函数 ,对 进行加窗处理。 2、常用的窗函数1. 三角形窗(Bartlett Window)121,122210,12)(NnNNnNnNnnw(6-2-11a)4/sin()4/sin(2)(NNNeWj(6-2-11b)其频率响应为主瓣宽度为( ).N/82. 汉宁汉宁(Hanning)窗,又称升余弦窗窗,又称升余弦窗)()12cos(1 21)(nRNnnwN(6-2-12a)12()12
13、(25. 0)(5 . 0)()()12()12(25. 0)(5 . 0)()21(NWNWWWeWeNWNWWeWRRRajNjRRRj(6-2-12b)其频率响应 和幅度响应 分别为 是三项矩形窗的幅度响应 的移位加权和,使旁瓣相互抵消,能量更集中在主瓣,但主瓣宽度比矩形窗的主瓣加宽了一倍,为( ).N/8)(jeW)(W)(W)(RW3. 汉明(Hamming)窗,又称改进 的升余弦窗)()12cos(46. 054. 0)(nRNnnwN(6-2-13a)(6-2-13b)其幅度响应为同汉宁窗的主瓣宽度 相同,但旁瓣幅度更小,旁瓣峰值小于主瓣峰值的1%。N/8)12()12(23.
14、0)(54. 0)(NWNWWWRRR4. 布莱克曼布莱克曼(Blankman)窗,又称二阶升余弦窗窗,又称二阶升余弦窗)()14cos(08. 0)12cos(5 . 042. 0)(nRNnNnnwN(6-2-14a)(6-2-14b)其幅度响应为)14()14(04. 0)12()12(25. 0)(42. 0)(NWNWNWNWWWRRRRR其窗函数中包含有余弦的二次谐波分量 通过加入余弦的二次谐波分量,可进一步降低旁瓣,但其主瓣宽度变为 .N/12下图是N=31时矩形窗、三角窗、汉宁窗、汉明窗及布莱克曼这5种窗口函数的包络曲线图6-2-4 5种窗函数的包络曲线下图是N=51时矩形窗、
15、汉宁窗、汉明窗及布莱克曼4种窗口函数的幅度响应图6-2-5 4种窗函数的幅度响应)( ) 0(/ )(lg20,51dBWWAN下图是用矩形窗、汉宁窗、汉明窗及布莱克曼设计的低通滤波器的幅度响应图6-2-6 用窗口法设计的低通滤波器的单位脉冲 响应与幅度响应(N=5)窗函数法设计滤波器时阶数选择名称近似过渡带宽精确过渡带宽最小阻带衰减矩形4/M1.8/M21dB巴特利特8/M6.1/M25dB汉宁8/M6.2/M44dB哈明8/M6.6/M51dB布莱克曼12/M11/M74dB取kaiser窗时用MATLAB中的kaiserord函数来得到长度M3、 几种常用的理想滤波器几种常用的理想滤波器
16、 1. 理想高通滤波器理想高通滤波器anananananannheeHccHPccajjHP1)()(sin)()(sin)(00)(频率响应:单位脉冲响应:(6-2-19)(6-2-20)anananananannheeHccccBPccccajjBP12121112)()(sin)()(sin)(, 00)(频率响应:单位脉冲响应:(6-2-21)(6-2-22)2. 理想带通滤波器理想带通滤波器anananananananannheeHccccBPccccajjBP121212111)()(sin)()(sin)()(sin)(0, 0)(频率响应:单位脉冲响应:(6-2-23)(6-2
17、-24)3. 理想带阻滤波器理想带阻滤波器4理想线性相位线性差分滤波器理想线性相位线性差分滤波器 jjdefejeH)( | )(|jdefeH0202)(频率响应: (6-2-25)(6-2-26)(6-2-27)幅度响应:相位响应: 由于线性差分滤波器的幅度随频率作线性变化,关于0处为奇对称,为了实现线性相位的特性,其单位脉冲响应为奇对称且节数N为奇数。nnnnhndef0)() 1()(单位脉冲响应:(6-2-28)5理想线性相位希尔伯特(理想线性相位希尔伯特(Hilbert) 变换器变换器00)(jjeHj为奇数为偶数nnnnnhn20) 1(1)(希尔伯特变换器的频率响应单位脉冲响应
18、N12对于式的有限长N的实现,为了获得线性相位的特性,其单位脉冲响应必须具有 的延时,为了保证 为整数, N必须奇数 .为奇数为偶数)()(2)(0)() 1(1)(nnnnnhn0202)(因此上式变为此时实际的相位响应为:(6-2-30)(6-2-29)4、 窗函数法小结与例子窗函数法小结与例子hnd( )利用窗函数设计FIR滤波器的过程可总结如下:1.给定要求的频率响应函数;2.利用(6-2-2)式,由给定的滤波器的幅频响应参数求出 理想的单位脉冲响应 .ssAlg20)(nwAN21N)()()(nwnhnhdjnNnjenheH)()(103按允许的过渡带宽度及阻带衰减,选择合适的窗
19、函数,并估计节数N:其中A由窗函数的类型决定。4确定延时值 (即滤波器的对称中心)6必要时验算FIR滤波器的频率响应:(6-2-32)5求例例6-2-1 设计一线性相位FIR数字低通滤波器,截止频率 ,过渡带宽度 ,阻带衰减 dB。2 . 0c4 . 040sA解:1)()(sin21)(nndeenhcjnjdcc)(nw40sA2)选择窗函数,估计节数N。仅从要求阻带衰减 dB来说,可选择汉宁窗、海明窗、布拉克曼窗等,若再考虑从滤波器节数最小的原则出发,可选择汉宁窗或海明窗。 204 .08AN38.0218由此求得 ,也可取N=21,这时实际的过渡带宽将为:1021N)(nwh)()()
20、(nwnhnhhd)12cos(1 21Nn)()(sinnnc)(nRN)10(2)10(2 . 0sin)1 . 0cos(1 nnn)(21nRjnNnjenheH)()(103)确定延时值 4)采用汉宁窗,求得 5)求频率响应 其幅频响应和相频响应见下图 可见在通带范围内其相位是线性相位的。 在阻带,滤波器满足了所要求的衰减特性。 从以上的分析和例子可见窗口法设计的最大优点是十分简单实用,其频域特性容易满足要求。 缺点是在大多数情况,设计所得的频响的边界频率往往不能严格控制,与等波纹最佳设计相比,由窗函数法设计的滤波器长度往往较大。1.设计步骤v给定所要求的频率响应函数 ;v对该频率响
21、应函数做傅里叶逆变换,求取理想滤波器的单位冲激响应 ;v由过渡带宽和阻带最小衰减等指标要求,选取窗函数类型及窗的长度;v求所设计FIR滤波器的单位冲激响应v计算频率响应函数 ,并检验其是否满足性能要求。)(jdeHhnd( )()()(nwnhnhd)(jeH窗函数法设计滤波器时阶数选择名称近似过渡带宽精确过渡带宽最小阻带衰减矩形4/M1.8/M21dB巴特利特8/M6.1/M25dB汉宁8/M6.2/M44dB哈明8/M6.6/M51dB布莱克曼12/M11/M74dB取kaiser窗时用MATLAB中的kaiserord函数来得到长度MvMatlab信号处理工具箱提供了两个函数fir1和f
22、ir2基于窗函数法设计FIR数字滤波器v(1)fir1 基于经典的窗函数法设计线性FIR滤波器,包括低通、带通、高通、带阻等各种类型;该函数所用算法的基本思想是,假定w(n)为指定的窗函数,理想滤波器的单位冲激响应为h(n),则可得到滤波器的系数b(n)=w(n)h(n);v函数fir1的调用格式如下:vb=fir1(n, Wn ,ftype,window) 其中,返回值b表示FIR滤波器长为n+1的系数向量;输入向量n为滤波器的阶数;v Wn为滤波器的截止频率,为归一化频率,在0-1之间取值;v window为窗函数(默认为hamming窗);vftype为滤波器类型,包括;high-高通;
23、stop带阻;等2、利用fir1函数设计FIR滤波器 MATLAB提供函数fir1实现FIR滤波器的窗函数设计。 函数格式: b=fir1(n,wn); b=fir1(n,wn,ftype); b=fir1(n,wn,window); b=fir1(n,wn,ftype,window);fir1函数用经典方法实现加窗线性相位FIR数字滤波器的设计。 (1)b=fir1(n,wn); 可以设计n阶线性相位的低通FIR数字滤波器,滤波器系数于b中。 B(z) = b(1)+b(2)z-1+ b(3)z-2+ b(n+1)z-n 注:此时用默认的哈明窗来设计FIR滤波器。 wn 以pi为单位,0wn
24、1。 当wn=w1 w2时,则表示设计的滤波器是带通滤波器。 b(n)的下标从1开始。 (2)b=fir1(n,wn,ftype); 可以设计n阶线性相位的高通或带阻FIR数字滤波器,滤波器系数于b中。 B(z) = b(1)+b(2)z-1+ b(3)z-2+ b(n+1)z-n 当ftype为high时,设计高通FIR滤波器。 当ftype为stop时,设计带阻FIR滤波器,此时wn=w1 w2 。 在设计高通或带阻滤波器时,若n为奇数,则函数fir1会将其自动加1,使其成为偶数。这样就保证了h(n)有奇数个,从而满足线性相位高通和带阻FIR滤波器的设计要求。此时同样默认为哈明窗。 (3)
25、b=fir1(n,wn,window); 它与(1)的区别在于可以自由地选择不同的窗来完成线性相位FIR滤波器的设计。 w = boxcar(M)数组w中返回M点矩形窗函数w = triang(M)数组w中返回M点Bartlett(三角)窗函数w = hanning(M) 数组w中返回M点汉宁窗函数w = hamming(M)数组w中返回M点哈明窗函数w = blackman(M)数组w中返回M点布莱克曼窗函数w = kaiser(M,beta)数组w中返回beta值M点凯泽窗函数注意:窗的长度应为M=n+1,它应该与h(n)的点数相同。(4)b=fir1(n,wn,ftype,window)
26、; 它可以用任意的窗函数设计不同的线性相位的高通或带阻FIR滤波器 。 例4:根据下列技术指标,设计一个数字FIR低通滤波器: wp =0.2,ws=0.3,Rp=0.25dB,As=50dB。(1)若选择哈明窗设计: wp=0.2*pi;ws=0.3*pi; tr_width=ws-wp; M=ceil(6.6*pi/tr_width) n=0:1:M-1; wc=(ws+wp)/2; h = fir1(M,wc/pi); H,W = freqz(h,1); plot(W/pi, 20*log10(abs(H); (2)若选择布莱克曼窗设计: wp=0.2*pi;ws=0.3*pi; tr_width=ws-wp; M=ceil(6.6*pi/tr_width) n=0:1:M-1; wc=(ws+wp)/2; h = fir1(M,wc/pi, blackman(M+1); H,W = freqz(h,1); plot(W/pi, 20*log10(abs(H);