班 级09电本一班学号 2009041501姓 名陈丽琼 同组人
实验日期2011.12.27 室温 大气压 成 绩
实验题目: 实验五 FIR数字滤波器的设计
一、实验目的
(1)掌握用窗函数法、频率采样法及优化设计法设计 FIR 滤波器的原理及方法,熟悉
相应的 MATLAB 编程。
(2)熟悉线性相位 FIR 滤波器的幅频特性和相频特性。
(3)了解各种不同窗函数对滤波器性能的影响。
二、实验原理:
(一)线性相位实系数 FIR 滤波器按其 N 值奇偶和 h(n)的奇偶对称性分为四种:
1、h(n)为偶对称,N 为奇数;H(ejω)的幅值关于 ω=0,π,2π 成偶对称。
2、h(n)为偶对称,N 为偶数;H(ejω)的幅值关于 ω=π 成奇对称,不适合作高通。
3、h(n)为奇对称,N 为奇数;H(ejω)的幅值关于 ω=0,π,2π 成奇对称,不适合作高
通和低通。
4、h(n)为奇对称,N 为偶数;H(ejω) ω=0、2π=0,不适合作低通。
(二) 窗口法
窗函数法设计线性相位 FIR 滤波器步骤
1、确定数字滤波器的性能要求:临界频率{ωk},滤波器单位脉冲响应长度 N; 2、根据性能要求,合理选择单位脉冲响应 h(n)的奇偶对称性,从而确定理想频率响应 Hd(ejω)的幅频特性和相频特性;
3、求理想单位脉冲响应 hd(n),在实际计算中,可对 Hd(ejω)按 M(M 远大于 N)点等距离采样,并对其求 IDFT 得 hM(n),用 hM(n)代替 hd(n);
4、选择适当的窗函数 w(n),根据 h(n)= hd(n)w(n)求所需设计的 FIR 滤波器单位脉冲响应;
5、求 H(ejω),分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度 N,重复上述设计过程, 以得到满意的结果。
窗函数的傅式变换 W(ejω)的主瓣决定了 H(ejω)过渡带宽。W(ejω)的旁瓣大小和多少决定了 H(ejω)在通带 和阻带范围内波动幅度,常用的几种窗函数有:
(1)矩形窗(Rectangle Window) w( n) = R N ( n)
(2)汉宁(Hanning)窗,又称升余弦窗
(3)汉明窗,又称改进的升余弦窗
(4)布莱克曼(Blankman)窗,又称二阶升余弦窗
(5)凯塞(Kaiser)窗
其中:β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带 越小衰减也越大。I0(·)是第一类修正零阶贝塞尔函数。
若阻带最小衰减表示为,β的确定可采用下述经验公式:
(三)频率采样法
频率采样法是从频域出发,将给定的理想频率响应 Hd(e )加以等间隔采样,然后以此 Hd(k)作为实际 FIR 数字滤波器的频率特性的采样值 H(k),由 H(k)通过 IDFT 可得有限长序列 h(n) , 然后进行 DTFT 或 Z 变换即可得 H (e jω)
(四)FIR 滤波器的优化设计
FIR 滤波器的优化设计是按照最大误差最小化准则,使所设计的频响与理想频响之间的最大误差,在 通带和阻带范围均为最小,而且是等波动逼近的。
为了简化起见,在优化设计中一般将线性相位 FIR 滤波器的单位脉冲响应 h(n) 的对称中心置于 n=0 处,此时,线性相位因子 α=0。令 N=2M+1,则
如希望逼近一个低通滤波器,这里 M, ω c 和 ω r 固定为某个值。在这种情况下有
定义一逼近误差函数: E (ω ) = W (ω )[ H d (e jω ) -H (e jω )]
E(ω)为在希望的滤波器通带和阻带内算出的误差值,W(ω)为加权函数,K 应当等于比值 δ1/δ2,δ1 为通带波动,δ2 为阻带波动。在这种情况下,设计过程要求|E(ω)|在区间 0 ≤ ω ≤ ω c 和 ω r ≤ ω ≤ π 的最大值为最小, 它等效于求最小 δ2。 根据数学上多项式逼近连续函数的理论, 用三角多项式逼近连续函数,在一定条件下存在最佳逼近的三角多项式,而且可以证明这个多项式是唯 一的。这一最佳逼近定理通常称作交替定理。
在逼近过程中,可以固定 K,M,ω c 和 ω r ,而改变 δ2,按照交替定理,首先估计出(M+2)个误差函 数的极值频率 ω i ,i=0,1,...,M+1,共计可以写出(M+2)个方程
式中 ρ 表示峰值误差。一般仅需求解出 ρ,接着便可用三角多项式找到一组新的极值频率点,并求出新 的峰值误差 ρ。依此反复进行,直到前、后两次 ρ 值不变化为止,最小的 ρ 即为所求的 δ2。
这一算法通常称作雷米兹(Remez)交替算法。
三、实验内容:
(1) N=45,计算并画出矩形窗、汉明窗、布莱克曼窗的归一化的幅度谱,并比较各自的主要特点。
主要代码如下:
n=45;
y1=boxcar(n);
[h1,w1]=freqz(y1,n);
subplot(3,1,1);
plot(w1/pi,20*log(abs(h1)));
grid;
title('boxcar');
y2=hamming(n);
[h2,w2]=freqz(y2,n);
subplot(3,1,2);
plot(w2/pi,20*log(abs(h2)));
grid;
title('hamming');
y3=blackman(n);
[h3,w3]=freqz(y3,n);
subplot(3,1,3);
plot(w3/pi,20*log(abs(h3)));
grid;
title('blackman');
运行结果如图:
分析: 矩形窗函数具有最窄的主瓣宽度,但有最大的旁瓣峰值;汉明窗函数的主瓣稍宽,而旁瓣较小;布莱克 曼窗函数则更甚之。 矩形窗设计的滤波器过渡带最窄,但是阻带最小衰减也最差; 布莱克曼窗设计的滤波器阻带衰减最好,过度带最宽,约为矩形窗设计的的三倍。 汉明窗设计的滤波器处于矩形窗和布莱克曼窗之间。
(2) N=15,带通滤波器的两个通带边界分别是 ω1 = 0.3π , ω 2 = 0.5π 。用汉宁(Hanning)窗设计此线 性相位带通滤波器,观察它的实际 3dB 和 20dB 带宽。N=45,重复这一设计,观察幅频和相位特 性的变化,注意长度 N 变化的影响。
程序如下:
n=15;
wn=[0.3,0.5]
b=fir1(n,wn,Hanning(n+1));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('n=15 Hanning');
figure;
n=45;
wn=[0.3,0.5]
b=fir1(n,wn,Hanning(n+1));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('n=45 Hanning');
运行结果如图: 所设计滤波器的 h(n): 相应的幅频相频特性曲线:
分析: 观察它的实际 3dB 和 20dB 带宽,发现 N=15 时,其 3DB 带宽约为 0.2pi,20db 带宽约为 0.45pi; N=45 时,其 3DB 带宽约为 0.16pi,20db 带宽约为 0.3pi 5 DSP 试验 04008012 可见 N 增大,其 3db 带宽和 20db 带宽分别减小,滤波器特性变好,过渡带变陡,幅频曲线显示其通 带较平缓,波动小,阻带衰减大。相频特性曲线显示其相位随频率变化也变大。
(3) 分别改用矩形窗和 Blackman 窗,设计(2)中的带通滤波器,观察并记录窗函数对滤波器幅频特 性的影响,比较三种窗的特点。
程序如下:
n=15;
wn=[0.3,0.5]
b=fir1(n,wn,boxcar(n+1));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('n=15 boxcar');
figure;
n=45;
b=fir1(n,wn,boxcar(n+1));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('n=45 boxcar');
figure;
n=15;
b=fir1(n,wn,blackman(n+1));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('n=15 blackman');
figure;
n=45;
b=fir1(n,wn,blackman(n+1));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('n=45 blackman');
相应的幅频曲线如图:
分析:从以上图可见: 同一 N 值,分别用矩形窗,汉宁窗,汉明窗,布莱克曼窗设计滤波器时,主瓣宽度逐渐增大,过渡带 变宽,但阻带衰减性能变好;N 增加,主瓣变窄,旁瓣的分量增加,过渡带变陡,起伏震荡变密。 加窗处理对滤波器的频率响应会产生以下主要影响: (1)使理想特性不连续的边沿加宽,形成一过渡带,过渡带的宽度取决于窗函数频谱的主瓣宽度。 (2)在过渡带两旁产生肩峰和余振,它们取决于窗函数频谱的旁瓣;旁瓣越多,余振也越多;旁瓣相 对值越大,肩峰则越强。 (3)增加截断长度 N ,只能缩小窗函数频谱的主瓣宽度而不能改变旁瓣的相对值;旁瓣与主瓣的相对 关系只决定于窗函数的形状。因此增加 N,只能相对应减小过渡带宽。而不能改变肩峰值。肩峰值的大 小直接决定通带内的平稳和阻带的衰减,对滤波器性能有很大关系。
(4) 用 Kaiser 窗设计一专用线性相位滤波器,N=40, H d (e jω ) 如图,当 β=4、6、10 时,分别设计、 比较它们的幅频和相频特性,注意 β 取不同值时的影响。
程序如下:
n=40;wn=[0.2,0.4,0.6,0.8];
b=fir1(n,wn,kaiser(n+1,4));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('kaiser beta=4');figure;
b=fir1(n,wn,kaiser(n+1,6));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('kaiser beta=6');figure;
b=fir1(n,wn,kaiser(n+1,10));
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('kaiser beta=10');
运行结果如图:
分析: β 越大,w(n)窗越窄,频谱的旁瓣越小,但主瓣宽度也相应增加,过渡带变宽,相位特性变好。
(5) 用频率采样法设计(4)中的滤波器,过渡带分别设一个过渡点,令 H(k)=0.5。比较两种不同方法的结果。
程序如下:
n=40;
w=[0 0.175 0.2 0.225 0.375 0.4 0.425 0.575 0.6 0.625 0.775 0.8 0.825 1];
m=[0 0 0.5 1 1 0.5 0 0 0.5 1 1 0.5 0 0];
b=fir2(n,w,m);
[h,w]=freqz(b,1,512);
freqzplot(h,w);
title('频率采样法');
运行结果如右图所示:
分析:
四:实验思考题
1.定性地说明用本实验程序设计的 FIR 滤波器的 3dB 截止频率在什么位置?它等于理想频率响应 Hd(ejω) 的截止频率吗?
答:三分贝截止频率在主瓣内,幅度为最大幅度的一半的位置。它理论上不等于理想频率响应的截止频率,因为加了窗函数,频域上相当于是理想频率响应乘以窗函数,因此不一样。实验中读出的3dB带宽刚好和给的数值一样只是因为读数的误差,由图读得的比较不精确。
2.如果没有给定 h(n)的长度 N, 而是给定了通带边缘截止频率 ωc 和阻带临界频率 ωp, 以及相应的衰减, 你能根据这些条件用窗函数法设计线性相位 FIR 低通滤波器吗?
答:可以,先根据不同窗函数的最小阻带衰减不同来选择适合(有不同的选择方法,只要符合条件即可)的窗函数,再利用主瓣宽,计算出N的值,下面就可以按前面的方法进行设计了。
六、实验总结
通过本实验FIR滤波器的设计,采用窗函数法,进一步熟悉了滤波器的设计,掌握了用窗函数设计FIR数字滤波器的原理及方法,熟悉了相应的计算机高级语言编程,从所做的图中也更熟悉了FIR滤波器的幅频和相频响应,也更清楚地知道了各种窗函数的不同。主瓣宽度和旁瓣高度是互相矛盾的两方面,主瓣宽度反映的是滤波器的通带频率和阻带频率,旁瓣高度则反映了滤波器的阻带衰减特性,设计时要兼顾双方,根据滤波器的要求相互协调。下载本文