实验四 用窗函数法设计 FIR数字滤波器
一、 实验目的
(1) 掌握用窗函数法设计FIR数字滤波器的原理和方法。
(2) 熟悉线性相位FIR数字滤波器特性。
(3) 了解各种窗函数对滤波特性的影响。
二、 实验原理、
滤波器的理想频率响应函数为Hd(ejω),则其对应的单位脉冲响应为
hd(n) =
窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼hd(n)。由于hd(n)往往是无限长序列,且是非因果的,所以用窗函数。w(n)将hd(n)截断,并进行加权处理:
h(n) = hd(n) w(n)
h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数H(ejω)为
H(ejω) =
用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N。
三、 实验内容
1.MATALAB程序
任务一
N1=15;
N2=33;
b1=fir1(14,1/4,hanning(15));
b2=fir1(32,1/4,hanning(33));
[H1,W]=freqz(b1,1);
H1_db=20*log10(abs(H1));
magH1=abs(H1);
phaH1=angle(H1);
[H2,W]=freqz(b2,1);
H2_db=20*log10(abs(H2));
magH2=abs(H2);
phaH2=angle(H2);
figure(1);
subplot(2,1,1);stem(b1);
title('N=15时,汉宁窗得到的FIR滤波器脉冲响应');
subplot(2,1,2);stem(b2);
title('N=33时,汉宁窗得到的FIR滤波器脉冲响应');
figure(2);
subplot(3,1,1);plot(W/pi,magH1);
title('N=15时汉宁窗得到的FIR滤波器的幅频特性')
subplot(3,1,2);plot(W/pi,H1_db);
title('N=15时汉宁窗得到的FIR滤波器的对数幅频特性')
subplot(3,1,3);plot(W/pi,phaH1);
title('N=15时汉宁窗得到的FIR滤波器的相频特性')
figure(3);
subplot(3,1,1);plot(W/pi,magH2);
title('N=33时汉宁窗得到的FIR滤波器的幅频特性')
subplot(3,1,2);plot(W/pi,H2_db);
title('N=33时汉宁窗得到的FIR滤波器的对数幅频特性')
subplot(3,1,3);plot(W/pi,phaH2);
title('N=33时汉宁窗得到的FIR滤波器的相频特性')
任务二
N=33;
b1=fir1(32,1/4,boxcar(33));
b2=fir1(32,1/4,hanning(33));
b3=fir1(32,1/4,bartlett(33));
b4=fir1(32,1/4,blackman(33));
[H1,W]=freqz(b1,1);
H1_db=20*log10(abs(H1));
magH1=abs(H1);
phaH1=angle(H1);
[H2,W]=freqz(b2,1);
H2_db=20*log10(abs(H2));
magH2=abs(H2);
phaH2=angle(H2);
[H3,W]=freqz(b3,1);
H3_db=20*log10(abs(H3));
magH3=abs(H3);
phaH3=angle(H3);
[H4,W]=freqz(b4,1);
H4_db=20*log10(abs(H4));
magH4=abs(H4);
phaH4=angle(H4);
figure(1);
subplot(2,2,1);stem(b1);
title('矩形窗得到的FIR滤波器脉冲响应')
subplot(2,2,2);stem(b2);
title('汉宁窗得到的FIR滤波器脉冲响应')
subplot(2,2,3);stem(b3);
title('三角窗得到的FIR滤波器脉冲响应')
subplot(2,2,4);stem(b4);
title('布拉克曼窗得到的FIR滤波器脉冲响应')
figure(2);
subplot(2,2,1);plot(W/pi,magH1);
title('矩形窗得到的FIR滤波器幅频特性')
subplot(2,2,2);plot(W/pi,magH2);
title('汉宁窗得到的FIR滤波器幅频特性')
subplot(2,2,3);plot(W/pi,magH3);
title('三角窗得到的FIR滤波器幅频特性')
subplot(2,2,4);plot(W/pi,magH4);
title('布拉克曼窗得到的FIR滤波器幅频特性')
figure(3);
subplot(2,2,1);plot(W/pi,H1_db);
title('矩形窗得到的FIR滤波器相频特性')
subplot(2,2,2);plot(W/pi,H2_db);
title('汉宁得到的FIR滤波器相频特性')
subplot(2,2,3);plot(W/pi,H3_db);
title('三角窗得到的FIR滤波器相频特性')
subplot(2,2,4);plot(W/pi,H4_db);
title('布拉克曼得到的FIR滤波器相频特性')
figure(4);
subplot(2,2,1);plot(W/pi,phaH1);
title('矩形窗得到的FIR滤波器相频特性')
subplot(2,2,2);plot(W/pi,phaH2);
title('汉宁窗得到的FIR滤波器相频特性')
subplot(2,2,3);plot(W/pi,phaH3);
title('三角窗得到的FIR滤波器相频特性')
subplot(2,2,4);plot(W/pi,phaH4);
title('布拉克曼窗得到的FIR滤波器相频特性')
2.实验波形图
任务一
任务二
四、 实验结论
1.N的大小决定了窗谱的主瓣宽度,N越大,窗谱的主瓣宽度越大
2.最小阻带衰减只有窗行决定,不受N的影响,过渡带宽度与N和窗形都有关,N越大,过渡带宽越小
3.由实验可知滤波特性:布拉克曼窗>汉宁窗>三角窗>矩形窗
五、 思考题
(1) 如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?写出设计步骤。
答:①根据计算出所要设计的滤波器的过渡带
②查表找到满足的阻带最小衰减所需的窗函数
③利用已选的窗函数的过渡带宽除以得到低通滤波器单位脉冲响应的长度N
④根据求出h(n)
⑤再根据H(ejω) =求出响应函数H(ejω)
(2) 如果要求用窗函数法设计带通滤波器,且给定上、下边带截止频率为ω1和ω2,试求理想带通的单位脉冲响应hd(n)。
答:由算出,求出滤波器过渡带宽和滤波器长度N,最后由或求出,其中
第二篇:数字信号处理实验——用窗函数设计FIR滤波器
实验四 用窗函数设计FIR滤波器
一、 实验目的
1、熟悉FIR滤波器设计的基本方法。
2、掌握用窗函数设计FIR数字滤波器的原理及方法,熟悉相应的计算机高级语言编程。
3、熟悉线性相位FIR滤波器的幅频特性和相位特性。
4、了解各种不同窗函数对滤波器性能的响应。
二、 实验原理和方法
窗函数法设计的任务在于寻找一个可实现有限长单位脉冲响应的传递函数H(ejw)=h(n)e-jwn 去逼近hd(n)=1/2Hd(ejw)ejwndw
即h(n)=hd(n)w(n)
(一)几种常用的窗函数
1、矩形窗 w(n)=RN(n)
2、Hanning窗 w(n)=0.5[1-cos(2πn/N-1)]RN(n)
3、Hamming窗 w(n)=[0.54-0.46cos(2πn/N-1)]R N(n)
4、Blackman窗 w(n)=[0.42-0.5 cos(2πn/N-1)+0.08 cos(4πn/N-1)] RN(n)
5、Kaiser窗 w(n)=I0(β(1-[(2n/(N-1))-1]2)½)/I0(β)
(二)窗函数法设计线性相位FIR滤波器的步骤
1、确定数字滤波器的性能要求。确定各临界频率{wk}和滤波器单位脉冲响应长度N。
2、根据性能要求和N值,合理地选择单位脉冲响应h(n)有奇偶对称性,从而确定理想频率响应hd(ejw)的幅频特性和相位特性。
3、用傅里叶反变换公式求得理想单位脉冲响应hd(n)。
4、选择适当的窗函数W(n),求得所设计的FIR滤波器单位脉冲响应。
5、用傅里叶变换求得其频率响应H (ejw),分析它的幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述过程,直至得到满意的结果。
三、实验内容和步骤
1、分别用矩形窗、Hanning窗、Hamming窗、Blackman窗、Kaiser窗(β=8.5)设计一个长度N=8的线性相位FIR滤波器。
>> Window=boxcar(8);
>> b=fir1(7,0.4,Window)
b =
Columns 1 through 7
-0.0883 0.0000 0.2061 0.3822 0.3822 0.2061 0.0000
Column 8
-0.0883
>> Window=hanning(8);
>> b=fir1(7,0.4,Window)
b =
Columns 1 through 7
-0.0100 0.0000 0.1501 0.3599 0.3599 0.1501 0.0000
Column 8
-0.0100
>> Window=hamming(8);
>> b=fir1(7,0.4,Window)
b =
Columns 1 through 6
-0.0072 0.0000 0.1351 0.3721 0.3721 0.1351
Columns 7 through 8
0.0000 -0.0072
>> Window=blackman(8);
>> b=fir1(7,0.4,Window)
b =
Columns 1 through 6
0.0000 0.0000 0.1060 0.3940 0.3940 0.1060
Columns 7 through 8
0.0000 0.0000
>> Window=kaiser(8,8.5);
>> b=fir1(7,0.4,Window)
b =
Columns 1 through 6
-0.0001 0.0000 0.1068 0.3933 0.3933 0.1068
Columns 7 through 8
0.0000 -0.0001
2、用Hanning窗设计一个线性相位带通滤波器
>> Window=hanning(16);
>> b=fir1(15,[0.3 0.5],Window);freqz(b,1)
>> Window=hanning(46);
>> b=fir1(45,[0.3 0.5],Window);freqz(b,1)
分析实验结果:由图可看出当N由15变为45时,主瓣宽度和过渡带宽度都变窄了。
3、改用矩形窗和Blackman窗设计带通滤波器
>> Window=boxcar(16);
>> b=fir1(15,[0.3 0.5],Window);freqz(b,1)
>> Window=boxcar(46);
>> b=fir1(45,[0.3 0.5],Window);freqz(b,1)
>> Window=blackman(16);
>> b=fir1(15,[0.3 0.5],Window);freqz(b,1)
>> Window=blackman(46);
>> b=fir1(45,[0.3 0.5],Window);freqz(b,1)
比较Hanning窗、矩形窗和Blackman窗这三种窗函数的特点:用矩形窗设计时的主瓣宽度最小,用Blackman窗设计时旁瓣峰值衰减较大且旁瓣衰减的速度也很快但主瓣宽度较宽。
5、用Kaiser窗设计一个专用的线性相位滤波器。
(1)β=4时
>> Window=kaiser(41,4);
>> b=fir1(40,[0.2 0.4 0.6 0.8],'stop',Window);freqz(b,1)
(2)β=6时
>> Window=kaiser(41,6);
>> b=fir1(40,[0.2 0.4 0.6 0.8],'stop',Window);freqz(b,1)
(3)β=8时
>> Window=kaiser(41,8);
>> b=fir1(40,[0.2 0.4 0.6 0.8],'stop',Window);freqz(b,1)
分析β值不同的时候对结果的影响:由图可以看出随着β值的增大主瓣宽度变宽,阻带的最小衰减也大了,频谱的的旁瓣变小了。
四、思考题
1、频率取样法和窗函数法各有什么特点?
答:频率取样法是对给定的频率响应进行采样,通过离散傅里叶逆变换,从频谱采样点直接求得有限长单位脉冲响应,它能保证频率响应与给定指标在采样点处完全一样,这就在一定程度上克服了窗函数加权设计法在截止频率处不易控制的缺点。窗函数法是从时域出发,对于给定的频率响应,通过离散时间傅里叶逆变换求得单位脉冲响应,而后用窗函数对其进行截断和平滑,达到设计一个物理上可以实现且具有线性相位的FIR滤波器的目的,该方法简单易行,使用方便,有公式可循,其缺点是通带和阻带的截止频率不易控制。
2、如果没有给定h(n)长度N,而是给定了通带边缘截止频率和阻带临界频率以及相位的衰减,你能根据这些条件用窗函数法设计线性相位FIR低通滤波器吗?
答:可以。可以利用频率采样法。