图15 所设计的带通滤波器的幅度和相位响应
由滤波器的相位特性也可以看出该滤波器是线性相位的FIR滤波器。此滤波器的群延时为al=(M-1)/2=19.5。接下来我们来看看此题所设计的滤波器的滤波效果:S为含有3个频率成分的信号(归一化频率(w/2?)分别为0.05、0.2、0.45),用所设计的滤波器滤除归一化频率为0.05和0.45的成分。
l=0:100;
s1=sin(0.1*pi*l);s2=sin(0.4*pi*l);s3=sin(pi*0.9*l); s=s1+s2+s3; sf=filter(h,1,s); subplot(311);
stem(l,s);title('滤波前的信号'); subplot(312);
stem(l,sf);title('滤波后的信号'); subplot(313);
stem(l,s2);title('想要保留的信号');
图16 采用filter函数进行数字滤波前后信号比较示意图 同上面分析相似,滤波后的信号和想要保留的信号的幅度和频率基本一致(滤波后的信号相对于想要保的信号有一个相位延迟,这是线性相位FIR滤波器的群延迟引起的,此滤波器留的群延迟(r=(M-1)/2=19.5),所以我们可以说该滤波器基本满足了以上所提出的滤波要求。
③ FIR数字滤波器的最优设计法 此题的MATLAB程序为:
%设计指标 ws1=0.2*pi; wp1=0.35*pi;
wp2=0.65*pi; ws2=0.8*pi; rp=1; as=60;
%设置边界频率和幅度要求 F=[ws1/pi,wp1/pi,wp1/pi,ws2/pi]; A=[0,1,0];
%设置各频带的波纹要求 devp=(10^(rp/20)-1)/(10^(rp/20)+1); devs=10^(-as/20); dev=[devs,devp,devs];
%确定remez参数,其中滤波器的阶数为(N+1),程序运行后得到N=26
[N,Fo,Ao,W]=remezord(F,A,dev); %调用remez函数进行设计 h=remez(N,Fo,Ao,W); n=0:N; stem(n,h);
title('滤波器的单位冲激响应'); freqz(h,1,512);
title('幅度响应和相位响应');
图17 所设计的滤波器的实际单位脉冲响应
由图17可知滤波器的实际脉冲响应h是偶对称的,即h(n)=h(N-n),故该滤波器满足FIR线性相位的条件,该滤波器是线性相位的FIR滤波器。
图18 所设计的带通滤波器的幅度和相位响应
由滤波器的相位特性也可以看出该滤波器是线性相位的FIR滤波
器。此滤波器的群延时为al=(N)/2=13。接下来我们来看看此题所设计的滤波器的滤波效果:S为含有3个频率成分的信号(归一化频率(w/2?)分别为0.05、0.2、0.45),用所设计的滤波器滤除归一化频率为0.05和0.45的成分。
l=0:100;
s1=sin(0.1*pi*l);s2=sin(0.4*pi*l);s3=sin(pi*0.9*l); s=s1+s2+s3; sf=filter(h,1,s); subplot(311)
stem(l,s);title('滤波前的信号'); subplot(312);
stem(l,sf);title('滤波后的信号'); subplot(313);
stem(l,s2);title('想要保留的信号');
图19采用filter函数进行数字滤波前后信号比较示意图
同上面分析相似,滤波后的信号和想要保留的信号的幅度和频率基本一致(滤波后的信号相对于想要保的信号有一个相位延迟,这