您的当前位置:首页正文

FIR数字滤波器的设计

来源:一二三四网
.

实验五 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

图五:内容五对应图

..

因篇幅问题不能全部显示,请点此查看更多更全内容

Top