实际脉冲响应0.60.40.20-0.20102030n幅度频率响应40001窗函数特性wd(n)h(n)0.520n相位频率响应400-33.1416H(ej?)?(?)-200-3.14160300450f(Hz)10000300450f(Hz)1000
图11-6
5、用窗函数法设计FIR带通数字滤波器
例11-7选择合适的窗函数设计一个FIR数字带通滤波器,要求:下阻带截止频率为ws1=0.2π,As=65dB;通带低端截止频率wp1=0.3π,Rp=0.05dB;通带高端截止频率wp2=0.7π,Rp=0.05dB;上阻带截止频率为ws2=0.8π,As=65dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。
分析:根据设计指标应选择布莱克曼窗。程序清单如下: wp1=0.3*pi;wp2=0.7*pi; ws1=0.2*pi;ws2=0.8*pi; wp=[wp1,wp2];ws=[ws1,ws2]; deltaw=wp1-ws1; N0=ceil(11*pi/deltaw);
N=N0+mod(N0+1,2) %为实现FIR类型1偶对称滤波器,应确保N为奇数 windows=(blackman(N))';
wc1=(ws1+wp1)/2;wc2=(ws2+wp2)/2; hd=ideal_lp(wc2,N)-ideal_lp(wc1,N); b=hd.*windows;
[db,mag,pha,grd,w]=freqz_m(b,1);
n=0:N-1;dw=2*pi/1000;
Rp=-(min(db(wp1/dw+1:wp2/dw+1))) %检验通带波动 ws0=[1:ws1/dw+1,ws2/dw+1:501];%建立阻带频率样点数组 As=-round(max(db(ws0))) %检验最小阻带衰减 subplot(2,2,1);stem(n,b);
axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应'); xlabel('n');ylabel('h(n)'); subplot(2,2,2);stem(n,windows); axis([0,N,0,1.1]);title('窗函数特性'); xlabel('n');ylabel('wd(n)'); subplot(2,2,3);plot(w/pi,db);
axis([0,1,-150,10]);title('幅度频率响应');
xlabel('频率(单位:\\pi)');ylabel('H(e^{j\\omega})');
set(gca,'XTickMode','manual','XTick',[0,ws1/pi,wp1/pi,wp2/pi,ws2/pi,1]); set(gca,'YTickMode','manual','YTick',[-100,-65,-20,-3,0]);grid subplot(2,2,4);plot(w/pi,pha); axis([0,1,-4,4]);title('相位频率响应');
xlabel('频率(单位:\\pi)');ylabel('\\phi(\\omega)');
set(gca,'XTickMode','manual','XTick',[0,ws1/pi,wp1/pi,wp2/pi,ws2/pi,1]); set(gca,'YTickMode','manual','YTick',[-pi,0,pi]);grid 程序运行结果如下: N = 111 Rp = 0.0033 As = 73
特性曲线如图11-7所示。
注意:带通滤波器的设计指标中,两边过渡带的宽度一般应该一致,deltaw可以由任意一边的带宽来确定。如果两边过渡带的宽度不一致。则应求两个过渡带中较小的一个作为设计依据(带阻滤波器的设计同此),此时,deltaw一句改为:
deltaw=min((wp1-ws1),(ws2-wp2));
由程序运行结果可见,用布莱克曼窗设计的结果不仅满足指标要求,且具有很小的通带波动,很高的阻带衰减,过渡带很窄。
实际脉冲响应0.41窗函数特性wd(n)050n幅度频率响应100h(n)0.20-0.20.50050100n相位频率响应0-3-203.1416H(ej?)-65-100?(?)0-3.141600.20.30.70.8频率(单位:?)100.20.30.70.8频率(单位:?)1
图11-7
例11-8 用MATLAB信号处理工具箱提供的fir1函数设计一个FIR数字带通滤波器,要求:下阻带截止频率为fs1=100Hz,As=65dB;通带低端截止频率fp1=150 Hz,Rp=0.05dB;通带高端截止频率fp2=350Hz,Rp=0.05dB;上阻带截止频率为fs2=400Hz,As=65dB;采样频率Fs=1000Hz。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。
程序清单如下: fp1=150;fp2=350; fs1=100;fs2=400; Fs=1000;
ws1=fs1/(Fs/2)*pi;ws2=fs2/(Fs/2)*pi; wp1=fp1/(Fs/2)*pi;wp2=fp2/(Fs/2)*pi; deltaw=wp1-ws1; N0=ceil(11*pi/deltaw);
N=N0+mod(N0+1,2) %为实现FIR类型1偶对称滤波器,应确保N为奇数 windows=blackman(N);
wc1=(ws1+wp1)/2;wc2=(ws2+wp2)/2; b=fir1(N-1,[wc1,wc2],windows); [db,mag,pha,grd,w]=freqz_m(b,1);
n=0:N-1;dw=2*pi/1000;
Rp=-(min(db(wp1/dw+1:wp2/dw+1))) %检验通带波动 ws0=[1:ws1/dw+1,ws2/dw+1:501];%建立阻带频率样点数组 As=-round(max(db(ws0))) %检验最小阻带衰减 6、窗函数法设计FIR数字带阻滤波器
例11-9选择合适的窗函数设计一个FIR数字带阻滤波器,要求:下通带截止频率为wp1=0.2π,Rp=0.1dB;阻带低端截止频率ws1=0.3π,As=40dB;阻带高端截止频率ws2=0.7π,As=40dB;上通带截止频率为wp2=0.8π,Rp=0.1dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。
分析:根据设计指标选择汉宁窗。程序清单如下: wp1=0.2*pi;wp2=0.8*pi; ws1=0.3*pi;ws2=0.7*pi; wp=[wp1,wp2];ws=[ws1,ws2]; deltaw=ws1-wp1; N0=ceil(6.2*pi/deltaw);
N=N0+mod(N0+1,2) %为实现FIR类型1偶对称滤波器,应确保N为奇数 windows=(hanning(N))';
wc1=(ws1+wp1)/2;wc2=(ws2+wp2)/2;
hd=ideal_lp(wc1,N)+ideal_lp(pi,N)-ideal_lp(wc2,N);%建立理想带阻 b=hd.*windows;
[db,mag,pha,grd,w]=freqz_m(b,1); n=0:N-1;dw=2*pi/1000;
wp0=[1:wp1/dw+1,wp2/dw+1:501];%建立通带频率样点数组 As=-round(max(db(ws1/dw+1:ws2/dw+1))) %检验最小阻带衰减 Rp=-(min(db(wp0))) %检验通带波动 subplot(2,2,1);stem(n,b);
axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应'); xlabel('n');ylabel('h(n)'); subplot(2,2,2);stem(n,windows); axis([0,N,0,1.1]);title('窗函数特性'); xlabel('n');ylabel('wd(n)'); subplot(2,2,3);plot(w/pi,db);
axis([0,1,-150,10]);title('幅度频率响应');
相关推荐: