3-2-1 计算理想低通滤波1 计算理想低通滤波器的ha(n) 函数ideal_lp 设所要求的理想数字滤波器的频率响应为
H(e
d
jw
),h(n)是与其对应的单
d
1(n)位脉冲响应,因此hd
2
jw
Hd(e)e
d
jwjwn
dw
由于Hd(e)是矩形频率特性,故h(n)一定是无限长的非因果序列。 而所要设计的是FIR数字滤波器,其单位脉冲响应h(n)必然是有限长的,所以要用有限的h(n)来逼近无限长的hd(n),最有效的方法是截断hd(n),即用有限长的窗函数来截取hd(n), 表示为: h(n)=hd(n)w(n) 这种设计方法称为窗函数设计法。 数字低通滤波器的窗函数设计
理想低通数字滤波器的频率响应Hd(e)为:
jwa
|w|wcjw1e,
Hd(e)
0,|w|wc
jw
式中
w——截至频率,rad;
c
a——采样延迟。
则理想数字低通滤波器的单位脉冲响应hd(n)为
1
hd(n)2
Hd(e)e
jwjwn
dw
sinc(na)1wcjwajwn
1eedw2wc(na)
hd(n)为无限长非因果序列,关于a偶对称。
为了从hd(n)得到一个FIR数字滤波器,必须同时在两边截取hd(n),要得到一个因果的线性相位FIR滤波器,它的h(n)的长度为N,必须有
0nN-1hd(n),N1h(n) a=
0,其它2
这种截取可看作是 h(n)=hd(n)w(n)
0nN-11,其中 w(n)矩形窗
0,其它
h(n)为关于a偶对称的有限长因果序列,N为奇数时是1型,N为偶数时
是2型。在MATLAB中利用ideal_lp函数,计算理性低通滤波器的单位脉冲响应
hd(n)。
function hd=ideal_lp(wc,N); alpha=(N-1)/2; n=0:1:N-1;
m=n-alpha+eps;
hd=sin(wc*m)./(pi*m);
3-2-2 计算FIR滤波器的绝对和相对的幅度响应 函数freqz_m 在频域中,FIR数字滤波器的频率响应Hd(e)为:
H(e
jw
jw
jw
1)2
jw
Hd(e)W(e
jj(w)
)d
jw
因而H(e)逼近Hd(e)的好坏,完全取决于窗函数的频率特性W(e)。 在MATLAB中利用freqz_m计算绝对和相对的幅度响应。 function[db,mag,pha,w]=freqz_m(b,a); [H,w]=freqz(b,a,1000,'whole'); H=(H(1:1:501))'; w=(w(1:1:501))'; mag=abs(H);
db=20*log10((mag+eps)/max(mag)); pha=angle(H);
3-2-3 提取大于50dB衰减的汉明窗FIR低通滤波器 DSP3203 例5 根据下列技术指标,设计一个数字FIR滤波器
w=0.2π,Ap=0.25dB
wr=0.4π,Ar=50dB
p
选择一个恰当的窗函数,确定单位脉冲响应,绘出所设计的滤波器的幅度响应。 解:根据窗函数最小阻带衰减的特性,只有海明窗和布莱克曼窗可提供大于50dB的衰减。故选择海明窗,它提供较小的过渡带,因此具有较小的阶数。 流程图:
图2.14
程序实现如下:
wp=0.2*pi;wr=0.4*pi;
tr_width=wr-wp; %过渡带宽度
N=ceil(6.6*pi/tr_width)+1 %滤波器的长度,N=奇数为1型;N=偶数为2型 n=0:1:N-1;
wc=(wr+wp)/2; %理想低通的截止频率
hd=ideal_lp(wc,N); %理想低通的单位脉冲响应 w_ham=(hamming(N))'; %海明窗
h=hd.*w_ham; %截取得到实际单位脉冲响应
[db,mag,pha,w]=freqz_m(h,[1]); %计算实际滤波器的幅度响应 delta_w=2*pi/1000;
Ap=-(min(db(1:1:wp/delta_w+1))); %实际通带波动
Ar=-round(max(db(wr/delta_w+1:1:501))); %最小阻带衰减 subplot(221);stem(n,hd);title('理想单位脉冲响应hd(n)') subplot(222);stem(n,w_ham);title('海明窗)w(n)') subplot(223);stem(n,h);title('实际单脉冲响应h(n)') subplot(224);plot(w/pi,db);title('幅度响应(db)') axis([0,1,-100,10]);
图2-13 滤波器的幅度响应
滤波器的长度为34,实际通带波动0.0477dB,最小阻带衰减52dB,满足设计要求。
滤波器的长度为35,实际通带波动 0.0301dB,最小阻带衰减52dB,满足设计要求。