% 【例4-7】根据下列技术指标,设计一个FIR数字低通滤波器:
% =0.3π, =0.4π, =3dB, =50dB
% 选择一个适当的窗函数,确定单位冲激响应,绘出所设计的滤波器的幅度响应。
% 根据窗函数最小阻带衰减的特性表4-2,可采用海明窗和布拉克曼窗可提供大于50dB的衰减。本例选择海明窗,其过渡带为6.6π/N,因此具有较小的阶次
% 例程4-13 利用海明窗设计Ⅱ型数字低通滤波器
clear all;
Wp=0.2*pi;
Ws=0.4*pi;
rp=3;
rs=50;
Rip=10^(-rp/20);
Atn=10^(-rs/20);tr_width=Ws-Wp; %过渡带宽度
N=ceil(6.6*pi/tr_width)+1 %滤波器长度
n=0:1:N-1;
Wc=(Ws+Wp)/2; %理想低通滤波器的截止频率
hd=ideal_lp1(Wc,N); %理想低通滤波器的单位冲激响应
w_ham=(hamming (N))'; %海明窗
h=hd.*w_ham; %截取得到实际的单位脉冲响应[db,mag,pha,grd,w]=freqz_m2(h,[1]); %计算实际滤波器的幅度响应
delta_w=2*pi/1000;
Ap=-(min(db(1:1:Wp/delta_w+1))) %实际通带纹波
As=-(max(db(Ws/delta_w+1:1:501))) %实际阻带纹波figure(1);
subplot(221);
stem(n,hd);
title('理想单位脉冲响应hd(n)');subplot(222);
stem(n,w_ham);
title('海明窗w(n)');subplot(223);
stem(n,h);
title('实际单位脉冲响应hd(n)');subplot(224);
plot(w/pi,db);
title('幅度响应(dB)');
axis([0,1,-100,10]);figure(2);
subplot(221);
plot(w/pi,mag);
title('幅频特性');
xlabel('w(/pi)');
ylabel('|H(jw)|');
axis([0,1,0,1.2]);
set(gca,'XTickMode','manual','XTick',[Wp/pi Ws/pi]);
set(gca,'YTickMode','manual','YTick',[Atn Rip]);
gridsubplot(222);
plot(w/pi,db);
title('幅频特性(db)');
xlabel('w(/pi)');
ylabel('dB');
axis([0,1,-100,5]);
set(gca,'XTickMode','manual','XTick',[Wp/pi Ws/pi]);
set(gca,'YTickMode','manual','YTick',[-rs -rp 0]);
gridsubplot(223);
plot(w/pi,pha/pi);
title('相频特性');
xlabel('w(/pi)');
ylabel('pha(/pi)');
axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[Wp/pi Ws/pi]);
gridsubplot(224);
plot(w/pi,grd);
title('群延时');
xlabel('w(/pi)');
ylabel('Sample');
axis([0,1,0,50]);
set(gca,'XTickMode','manual','XTick',[Wp/pi Ws/pi]);
grid