实验五 FIR数字滤波器的设计
一. 实验目的
1. 掌握用窗函数法、频率采样法设计FIR滤波器的原理,熟悉MATLAB编程; 2. 知道线性相位FIR滤波器的幅频特性和相频特性; 3. 了解不同窗函数对滤波器性能的影响。
二. 实验内容
1. N=45,计算并画出矩形窗、三角窗、Hanning窗、Hamming窗和Blackman窗归一化频谱,比较它们的特点;
2. N=15,带通滤波器的边界频率分别为0.3pi和0.5pi。用Hanning设计线性相位滤波器,观察3dB和20dB带宽;将N改为45,重复上述设计,观察N变化对幅频特性影响。 3. 改用矩形窗和Blackman窗,重复“2”中滤波器设计,观察并记录窗函数对幅频特性影响,比较它们特点。
4. 用Kaiser窗设计内容2参数的滤波器,N取40,Beta分别取4、6、10,比较Beta取值不同时对幅频特性影响。
5. 试用频率采样法设计内容2参数的滤波器。自己确定过渡带宽和过渡点值,将其与时域设计法比较,说说特点。
三. 思考题
若没有给出滤波器h(n)长度,但知道通带截止频率、阻带边界频率和衰减要求,说说如何确定滤波器长度并设计滤波
矩形窗函数具有最窄的主瓣宽度,但有最大的旁瓣峰值;汉明窗函数的主瓣稍宽, 而旁瓣较小;布莱克 曼窗函数则更甚之。 矩形窗设计的滤波器过渡带最窄,但是阻带最小 衰减也最差; 布莱克曼窗设计的滤波器阻带衰减最好,过度带最宽,约为矩形窗设计的的 三倍。 汉明窗设计的滤波器处于矩形窗和布莱克曼窗之间。 (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'); 相应的幅频曲线如图:
..
.
内容一程序代码: wp=pi/2; ws=pi/4;
wc=(wp+ws)/2/pi;
hn0=fir1(44,wc,boxcar(45)); hn1=fir1(44,wc,bartlett(45)); hn2=fir1(44,wc, hanning (45)); [hw0,wc]= freqz(hn0,1); [hw1,wc]=freqz(hn1,1); [hw2,wc]=freqz(hn2,1); subplot(321) stem (hn0) grid
xlabel('n');ylabel(' hn0'); title(' N=45时boxcar设计的hn波形 '); subplot(322)
plot(wc/pi,20*log10(abs(hw0)))
xlabel('w/pi');ylabel(' 幅度/db '); grid on;
title('N=45时boxcar设计低通 ') axis([0,1,-100,0])
subplot(323) stem (hn1); grid
xlabel('n');ylabel(' hn1');
title(' N=45时bartlett设计的hn波形');
subplot(324)
plot(wc/pi,20*log10(abs(hw1)))
xlabel('w/pi');ylabel(' 幅度/db '); grid on;
title('N=45时bartlett设计低通 ') axis([0,1,-100,0]) subplot(325) stem (hn2); grid
xlabel('n');ylabel(' hn2 ');
title(' N=45时hanning设计的hn波形');
subplot(326)
plot(wc/pi,20*log10(abs(hw2)))
xlabel('w/pi');ylabel(' 幅度/db '); grid on; ..
title('N=45时hanning设计低通 ') axis([0,1,-100,0]) wp=pi/2; ws=pi/4;
wc=(wp+ws)/2/pi;
hn3=fir1(44,wc,hamming(45)); hn4=fir1(44,wc,blackman(45)); [hw3,wc]=freqz(hn3,1); [hw4,wc]=freqz(hn4,1); subplot(221) stem (hn3); grid
xlabel('n');ylabel(' hn3 ');
title(' N=45时hamming设计的hn波形');
subplot(222)
plot(wc/pi,20*log10(abs(hw3)))
xlabel('w/pi');ylabel(' 幅度/db '); grid on;
title('N=45时hamming设计低通 ') axis([0,1,-100,0]) subplot(223) stem (hn4); grid
xlabel('n');ylabel(' hn4 ');
title(' N=45时blackman设计的hn波形');
subplot(224)
plot(wc/pi,20*log10(abs(hw4)))
xlabel('w/pi');ylabel(' 幅度/db '); grid on;
title('N=45时blackman设计低通 ') axis([0,1,-100,0])
内容二程序代码 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');
内容三程序代码: 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=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');
内容五程序代码: n1=15;
w=[0 0.1 0.2 0.25 0.3 0.37 0.45 0.5 0.6 0.7 0.8 0.9 1];
m=[0 0 0 0.5 1 1 1 1 0.5 0 0 0 0]; b1=fir2(n1,w,m);
[h1,w1]=freqz(b1,1,512); figure(1)
plot(w1/pi,20*log10(abs(h1))); title('n=15 频率采样法'); grid
n2=45;
b2=fir2(n2,w,m);
[h2,w2]=freqz(b2,1,512); figure(2)
plot(w2/pi,20*log10(abs(h2))); title('n=45 频率采样法'); grid
.
图一:内容一对应图
..
.
图二:内容二对应图
图三:内容三对应图
..
.
图四:内容四对应图
kaiser beta=450Magnitude (dB)0-50-10000.10.20.30.40.50.60.7Normalized Frequency ( rad/sample)0.80.911000Phase (degrees)0-1000-2000-300000.10.20.30.40.50.60.7Normalized Frequency ( rad/sample)0.80.91
kaiser beta=60Magnitude (dB)-50-100-15000.10.20.30.40.50.60.7Normalized Frequency ( rad/sample)0.80.911000Phase (degrees)0-1000-2000-300000.10.20.30.40.50.60.7Normalized Frequency ( rad/sample)0.80.91
图五:内容五对应图
..
因篇幅问题不能全部显示,请点此查看更多更全内容