北京师范大学
课 程 设 计 报 告
课程名称:
DSP
设计名称:FIR 低通、高通带通和带阻数字滤波器的设计
姓 名:
学 号:
班 级:
指导教师:
起止日期:
课 程 设 计 任 务 书
学生班级:
设计名称:
起止日期:
学生姓名:
学号:
FIR 低通、高通带通和带阻数字滤波器的设计
指导教师:
设计目标:
1、采用 Kaiser 窗设计一个低通 FIR 滤波器
要求:
采样频率为 8kHz;
通带:0Hz~1kHz,带内波动小于 5%;
阻带:1.5kHz,带内最小衰减:Rs=40dB。
2、采用 hamming 窗设计一个高通 FIR 滤波器
要求:
通带截至频率 wp=
阻带截止频率 ws=
,
rad6.0
rad4.0
dB
,
通带最大衰减
25.0
p
,阻带最小衰减
50
s
dB
3、采用 hamming 设计一个带通滤波器
低端阻带截止频率 wls = 0.2*pi;
低端通带截止频率 wlp = 0.35*pi;
高端通带截止频率 whp = 0.65*pi;
高端阻带截止频率 whs = 0.8*pi;
4、采用 Hamming 窗设计一个带阻 FIR 滤波器
要求:
通带:0.35pi~0.65pi,带内最小衰减 Rs=50dB;
阻带:0~0.2pi 和 0.8pi~pi,带内最大衰减:Rp=1dB。
FIR 低通、高通带通和带阻数字滤波器的设计
一、 设计目的和意义
1、熟练掌握使用窗函数的设计滤波器的方法,学会设计低通、带通、带阻滤波
器。
2、通过对滤波器的设计,了解几种窗函数的性能,学会针对不同的指标选择不
同的窗函数。
二、 设计原理
一般,设计线性相位 FIR 数字滤波器采用窗函数法或频率抽样法,本设计采用窗
函数法,分别采用海明窗和凯泽窗设计带通、带阻和低通。
如果所希望的滤波器的理想频率响应函数为
d eH
( jw
)
,如理想的低通,由信号系
统的知识知道,在时域系统的冲击响应 hd(n)将是无限长的,如图 2、图 3 所示。
Hd(w)
-wc
wc
图 2
图 3
若时域响应是无限长的,则不可能实现,因此需要对其截断,即设计一个 FIR 滤波
器频率响应
(
eH
jw
)
1
N
n
0
)(
enh
jwn
来逼近
d eH
( jw
)
,即用一个窗函数 w(n)来截断
hd(n),如式 3 所示:
)(
nh
d
)(
nwnh
)(
(式 1)。
最简单的截断方法是矩形窗,实际操作中,直接取 hd(n)的主要数据即可。
)(nh 作为实际设计的 FIR 数字滤波器的单位脉冲响应序列,其频率响应函数为:
(
eH
jw
)
1
N
n
0
)(
enh
jwn
令
z ,则
jwe
)(
zH
1
N
n
0
nznh
)(
式中,N 为所选窗函数 )(nw 的长度。
(式 2)
(式 3),
如果要求线性相位特性, )(nh 还必须满足:
)(
nh
(
Nh
1
n
)
(式 6),根据式 6 中的正、负和长度 N 的奇偶性又将线性
相位 FIR 滤波器分成四类。要根据所设计的滤波器特性正确选择其中一类。例如:
要设计线性相位低通特性,可选择
)(
nh
(
Nh
1
n
)
类。
三、 详细设计步骤
T
S
f
s
(公式 4)
表 1
窗函数 过滤带宽/(2π/N)阻带最小带宽
海明窗
凯泽窗
3.3
5
-53
-80
1、采用 Kaiser 窗设计一个低通 FIR 滤波器
要求:
采样频率为 8kHz;
通带:0Hz~1kHz,带内波动小于 5%;
阻带:1.5kHz,带内最小衰减:Rs=40dB
思路分析:
根据公式 4 可以得到通带截止频率 p 为 0.25,阻带截止频率 s 为
0.375。根据表 1 可算得
N
10
,则凯泽窗的时域表达式可以通过
n =kaiser(N)得到。低通滤波器的时域表达式是
nhdn
sin
n
npi
,其中
应该关于
1N 对称。这样,滤波器就得到了为:
2
nh
d
nh
dn
n
。最后利
用函数 freqz 得到加窗后的滤波器的幅频响应和相频响应。
2、采用 Hamming 窗设计一个高通线性相位 FIR 滤波器
要求:设计用窗函数法设计线性相位高通滤波器,要求截至频率 wp=
rad6.0
,阻带截止频率
ws=
rad4.0
,通带最大衰减
25.0
p
dB
,阻带最小衰减
50
s
dB
。有如下公式计算高通滤波器
的通带截止频率以及阻带截止频率:
w
p
2
f
p
/
F
s
w
s
2
Ff
s
s
/
P
20
log
1(
p
)
10
s
20
log
s
10
(1)
(2)
(3)
(4)
分析:根据设计要求给出的高通滤波器的性能指标以及(1) (2) (3) (4)公式计算得出该高通
滤波器性能指标的另一种表示为:通带偏差
p 0.0292
阻带偏差
s 0.0032
通带边沿频率
pf
1000
KHZ
阻带边沿频率
sf
600
KHZ
选择窗函数 W(n),计算窗函数长度 N,由已知条件知:阻带最小衰减
40
s
dB
参照表(1)可知汉宁窗和哈明窗都满足要求。我选择的窗函数是汉宁窗。
过渡带宽度
B
t
w
p
w
s
2.0
汉宁窗的精确过度带宽
Bt
/2.6
N
故要求
N
)
2.0
,
/2.6(
Bt
31N
解得:
又根据前面分析的四种类型的 FIR 滤波器的可知,对于高通滤波器,N 必须取奇数,
故
N=31
与汉宁窗函数的可以得知
)(
nw
1[5.0
cos(
31 nRn
)]
)(
12
3、采用 Hamming 窗设计一个带通线性相位 FIR 滤波器
要求:低端阻带截止频率 wls = 0.2*pi;
低端通带截止频率 wlp = 0.35*pi;
高端通带截止频率 whp = 0.65*pi;
高端阻带截止频率 whs = 0.8*pi;
思路分析:
由条件可知通带为 0.3pi,由通带大小可设计滤波器。这样,滤波器就得
到了为:
nh
d
h
1
dn
n
h
2
dn
n
n
。最后利用函数 freqz 得到加窗后的滤波器
的幅频响应和相频响应。
4、采用 Hamming 窗设计一个带阻 FIR 滤波器
要求:
阻带:0.35pi~0.65pi,带内最小衰减 Rs=50dB;
通带:0~0.2pi 和 0.8pi~pi,带内最大衰减:Rp=1dB
思路分析:
根据要求知阻带截止频率 s 分别为 0.35, 65.0
。通带截止频率为
0.2和 0.8。.根据表 1 可算得
6.6N
,则海明窗的时域表达式可以通
过 n =hamming(N)得到。带阻滤波器可以看成是高通加低通。它的时域表达
sin
sin
式 是
nh
dn
n
npi
n
h
npi
1N 对称。这样,滤波器就得到了为:
2
sin
n
l
npi
, 其 中 应 该 关 于
nh
d
nh
dn
n
。最后利用函数 freqz
得到加窗后的滤波器的幅频响应和相频响应。
附程序:%子函数,产生理想滤波器的时域波形
function hd=ideal(w,N);%1,2 型理想低通滤波器单位单位脉冲响应 hd(n),w 为窗口长度,
N 为截止频率%
alpha=(N-1)/2;
n=[0:N-1];
m=n-alpha+eps;%加一个小数以避免零作除数
hd=sin(w*m)./(pi*m);
四 程序代码
1、低通 FIR 滤波器:
% 采样频率为 8kHz;
% 通带:0Hz~1kHz,带内波动小于 5%; wp=0.、25pi
% 阻带:1.5kHz,带内最小衰减:Rs=40dB。 wst=0.375pi
%
clc
clear
Rs=40;
Wp=0.25*pi;
wp=0.125pi
Wst=0.375*pi;
wst=0.1875pi
dert_w=Wst-Wp;
% N=ceil((Rs-7.95)*2*pi/(14.36*dert_w)+1);
N=ceil((10*pi/dert_w)+1);
beta=0.5842*(Rs-21)^0.4+0.07886*(Rs-21);
%根据通带:0Hz~1kHz,带内波动小于 5%; 得
% 阻带:1.5kHz,带内最小衰减:Rs=40dB。 得
%滤波器在时域系统的冲击响应
%凯泽窗
%加窗后
%获取频率响应
%幅值
%分贝数
%相位
hd=ideal((Wst-Wp)/2,N);
B=kaiser(N,beta);
h=hd.*(B)';
[H,m]=freqz(h,[1],1024,'whole');
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
%绘图
w=m/pi
figure(1);
subplot(2,2,1);
stem(hd);
xlabel('n');
ylabel('hd');
title('滤波器时域');
subplot(2,2,2);
plot(w,mag);
xlabel('w');
ylabel('h');
title('加窗后幅度响应');
subplot(2,2,3);
plot(w,db);
xlabel('w');
ylabel('db');
title('分贝数');
axis([0 1 -100 0]);
subplot(2,2,4);
plot(w,pha);%实际低通滤波器单位脉冲响应
xlabel('w');
ylabel('相位');
title('相频响应');
axis([0 1 -4 4]);
2:高通滤波器设计
clear all;
wp=0.6*pi;
ws=0.4*pi;
tr_width=wp-ws;
N=ceil(6.2*pi/tr_width)
n=0:1:N-1;
wc=(ws+wp)/2;
hd=ideal_hp1(wc,N);
w_han=(hanning(N))';
h=hd.*w_han;
[db,mag,pha,w]=freqz_m2(h,[1]);
delta_w=2*pi/1000;
Ap=-(min(db(wp/delta_w+1:1:501)))
As=-round(max(db(1:1:ws/delta_w+1)))
subplot(2,2,1),
stem(n,hd)
title('理想单位脉冲响应 hd(n)')
subplot(2,2,2)
stem(n,w_han)
title('汉宁窗 w(n)')
subplot(2,2,3)
stem(n,h)
title('实际单位脉冲响应 h(n)')
subplot(2,2,4)
plot(w/pi,db)
title('幅度相应(db)')
axis([0,1,-100,10])
3:带通滤波器设计
wls = 0.2*pi;
wlp = 0.35*pi;
whp = 0.65*pi;
wc = [wlp/pi,whp/pi];
B = wlp-wls;
N = ceil(8/0.15);