1、1实验 6 有限冲激响应数字滤波器设计一 、实验目的:(1) 掌握用窗函数法设计 FIR数字滤波器的原理和方法。(2) 了解各种窗函数对滤波特性的影响。二、实验原理:如果所希望的滤波器的理想频率响应函数为 ,则其对应的单位抽样)(jdeH响应为 deHnhkjjdd )(21)(窗函数设计法的基本原理是用有限长单位抽样响应序列 h(n)逼近 hd(n),由于 hd(n)往往是无限长序列,且是非因果的,所以用窗函数 w(n)将 hd(n)截断,并进行加权处理,得到: )()()(nwhndh(n)就作为实际设计的 FIR数字滤波器的单位抽样响应序列,其频率响应函数 为:)(jeH式中,N 为所选
2、窗函数的长度10)()(Nnnjj eh在 MATLAB中,可以用 b=fir1(M,Wc,ftype,taper) 等函数辅助设计 FIR数字滤波器。M 代表滤波器阶数(单位抽样响应 h(n)的长度 N=M+1);Wc 代表滤波器的截止频率(对 归一化频率),当设计带通和带阻滤波器时,Wc 为双元素相量;ftype 代表滤波器类型,如high高通, stop带阻等;taper为窗函数类型,默认为海明窗;窗函数用 blackman, hamming, hanning , kaiser产生。2三、实验内容1.设计一 FIR低通滤波器,通带截止频率 ,通带衰减不大于2.0p0.25dB,阻带截止频
3、率 ,阻带衰减不小于 50dB。选择一个合适3.0s的窗函数,绘出所设计的滤波器的频率响应图。wp=0.2*pi;ws=0.3*pi;tr_width=ws-wp;M=ceil(6.6*pi/tr_width);n=0:1:M-1;wc=(ws+wp)/2;hd=ideal_lp(wc,M);w_ham=(hamming(M);h=hd.*w_ham;H,w=freqz(h,1,1000,whole);H=(H(1:1:501);w=(w(1:1:501);mag=abs(H);db=20*log10(mag+eps)/max(mag);delta_w=2*pi/1000;Rp=-(min(d
4、b(1:1:wp/delta_w+1);disp(实际通带波动为,num2str(Rp);As=-round(max(db(ws/delta_w+1:1:501);disp(最小阻带衰减为,num2str(As); subplot(2,2,1);stem(n,hd);title(理想抽样响应);axis(0 M-1 -0.1 0.3);xlabel(n);ylabel(hd(n);subplot(2,2,2);stem(n,w_ham);title(海明窗);axis(0 M-1 0 1.1);xlabel(n);ylabel(w(n);subplot(2,2,3);stem(n,h);tit
5、le(实际脉冲响应);axis(0 M-1 -0.1 0.3);xlabel(n);ylabel(h(n);subplot(2,2,4);plot(w/pi,db);title(衰减幅度);axis(0 1 -100 10);xlabel(以pi 为单位的频率);ylabel(分贝数);grid;%子程序 ideal_lpfunction hd=ideal_lp(wc,M) %理想低通滤波器;hd 为 0到 M-1之间的理想脉冲响应;wc 为截止频率;M 为理想滤波器的长度alpha=(M-1)/2;n=0:1:M-1;m=n-alpha+eps; %加一个小数以避免零做除数 3hd=sin(
6、wc*m)./(pi*m);FIR滤波器的阶次由过渡带宽度决定,窗函数的选择取决于阻带衰减,海明窗和布莱克曼窗均可提供大于 50 dB的衰减,由于海明窗提供了较窄的过渡带,因此具有较小的阶数。在设计中没有使用通带波动值 Rp=0.25dB,但必须检查设计的实际波动,验证它是否在给定容限内。2.(选做) 设计一个数字带通滤波器,指标要求如下:通带边缘频率:, ,通带衰减 。阻带边缘频率:45.01P65.02P )(1dB, ,最小阻带衰减 。 要求:给出 FIR3S7S 40数字滤波器的冲激响应,绘出幅度和相位频响曲线,讨论实现形式和特点。W1=2*400*tan(0.45/(2*400);W2=2*400*tan(0.65/(2*400);Wr1=2*400*tan(0.3/(2*400);Wr2=2*400*tan(0.75/(2*400);N,wn=buttord(w1,w2,wr1,wr2,1,40,s);4B,A=butter(N,wn,s);num,den=bilinear(B,A,400); h,w=freqz(num,den); f=w/pi*200; plot(f,20*log10(abs(h); axis(6,20,-30,10); grid; xlabel(频率/kHz) ; ylabel(幅度/dB)四、实验心得: