wp=0.3*pi;ws=0.45*pi;%输入设计指标
deltaw=ws-wp; %计算过渡带的宽度
N0=ceil(6.6*pi/deltaw) %按哈明窗计算滤波器长度N0
N=N0+mod(N0+1,2) %为实现FIR类型I偶对称滤波器,应确保N为奇数 windows=(hamming(N))'; %使用哈明窗,并将列向量变为行向量 wc=(ws+wp)/2; %截止频率取通阻带频率的平均值 hd=ideal_lp(wc,N); %建立理想低通滤波器 b=hd.*windows %求FIR系统函数系数 [db,mag,pha,grd,w]=freqz_m(b,1); %求解频率特性
n=0:N-1;dw=2*pi/1000; %dw为频率分辨率,将0~2π分为1000份 Rp=-(min(db(1:wp/dw+1))) %检验通带波动 As=-round(max(db(ws/dw+1:501))) %检验最小阻带衰减
subplot(2,2,1),stem(n,b,'filled','k');
axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应'); xlabel('n');ylabel('h(n)');
subplot(2,2,2),stem(n,windows,'filled','k'); axis([0,N,0,1.1]);title('窗函数特性'); xlabel('n');ylabel('wd(n)');
subplot(2,2,3),plot(w/pi,db,'k'); axis([0,1,-80,10]);title('幅频响应');
xlabel('频率(单位:\\pi)');ylabel('H(e^{j\\omega})');
set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]); set(gca,'YTickMode','manual','YTick',[-50,-20,-3,0]);grid subplot(2,2,4),plot(w/pi,pha,'k'); axis([0,1,-4,4]); title('相频响应');
xlabel('频率(单位:\\pi)');ylabel('\\phi(\\omega)');
set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]); set(gca,'YTickMode','manual','YTick',[-pi,0,pi]);grid
%freqz_m.m
function [db,mag,pha,grd,w]=freqz_m(b,a); [H,w]=freqz(b,a,1000,'whole'); H=(H(1:501))';w=(w(1:501))'; mag=abs(H);
db=20*log10((mag+eps)/max(mag)); pha=angle(H);
grd=grpdelay(b,a,w); 理想低通滤波器程序: function hd=ideal_lp(wc,N)
%hd=点0到N-1之间的理想脉冲响应 %wc=截止频率(弧度)
%N=理想滤波器的长度 tao=(N-1)/2; n=[0:(N-1)];
m=n-tao+eps; %加一个小数以避免0作除数 hd=sin(wc*m)./(pi*m);
六、 试验结果分析
1、实际滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线: