subplot(2,2,4) plot(w/pi,dbH); xlabel('\\Omega/\\pi');
ylabel('20log|H(e^j^/omega)|(dB)');grid; axis([0.6 0.9 -100 -50])
set(gca,'xtickmode','manual','xtick',[0.6,0.7,0.8,0.9]); set(gca,'ytickmode','manual','ytick',[-100,-75,-50]); figure(3);
plot(w/pi,pha);%画相频图
xlabel('\\Omega/\\pi');ylabel('Phase/degree');grid
运行,得
As =72.8692 Rp = 0.0021
单位冲激响应(db)0.30.20.10h(n)-0.1-0.2-0.3-0.40510152025n3035404550
图20加blackman窗的FIR带通滤波器单位冲激响应
-20-4020log|H(ej/omega)|(dB)20log|H(ej/omega)|(dB)01030-3-60-80-100-120-140-160-100.30.40.50.6?/?20log|H(ej/omega)|(dB)-50-7500.5?/?1-1000.60.70.80.9?/?
图21加blackman窗的FIR带通滤波器幅频响应
1050Phase/degree-5-10-15-20-25-3000.10.20.30.40.5?/?0.60.70.80.91
图22加blackman窗的FIR带通滤波器相频响应
可以看出,设定阻带衰减为75dB时,并不满足要求。因此将衰减增至80dB,得到返回的阻带最大衰减为75.9251dB,满足要求。由相频响应可以看出,在通带满足线性相位。信号得
到无失真传输。
8.4
设计一个线性相位FIR数字带阻滤波器。技术指标为?p1?0.35?,?p2?0.8?,
?st?0.5?,?st?0.65?,As?80dB。画出h(n)及20log|H(ej?)|(dB)及
12arg|H(ej?)|(dB)曲线。
解:
分析:由于要求阻带最小衰减为80dB,故考虑用kaiser窗进行设计。程序如下:
%8.4程序,FIR带阻滤波器 %通带截止频率wp 0.35pi 0.8pi
%阻带截止频率ws 0.5pi 0.65pi 最小衰减As80dB clc,clear all;
wp1=0.35*pi;wp2=0.8*pi; ws1=0.5*pi;ws2=0.65*pi; As0=80;
B=min(ws1-wp1,wp2-ws2);%过渡带宽
N0=ceil((As0-7.95)/(2.286*B))+1;%计算kaiser窗长 N=N0+mod(N0+1,2);%确保N是奇数 n=[0:N-1];
beta=0.1102*(As0-8.7);?ta wd=(kaiser(N,beta))';%求kaiser函数 wc1=(wp1+ws1)/2/pi; wc2=(wp2+ws2)/2/pi; wc=[wc1,wc2];
hn=fir1(N-1,wc,'stop',kaiser(N,beta)); [H,w]=freqz(hn,1,1000);%求频率响应 dbH=20*log10(abs(H)); dw=pi/1000;
As=-max(dbH(ws1/dw+1:1:ws2/dw+1))%检查阻带最小衰减
Rp=-min(min(dbH(1:1:wp1/dw+1)),min(dbH(wp2/dw+1:1:1000)))%检查通带最大
波纹
pha=unwrap(angle(H));%计算0~1上的相频响应 figure(1);stem(n,hn);
title('单位冲激响应(db)');xlabel('n');ylabel('h(n)');grid
figure(2)
subplot(2,2,[1 3]) plot(w/pi,dbH);%画幅频图 xlabel('\\Omega/\\pi');
ylabel('20log|H(e^j^/omega)|(dB)');grid;
set(gca,'ytickmode','manual','ytick',[-200,-150,-100,-75,-50,-2,0,2,
50]);
subplot(2,2,2) plot(w/pi,dbH); xlabel('\\Omega/\\pi');
ylabel('20log|H(e^j^/omega)|(dB)');grid; axis([0.2 0.5 -10 10])
set(gca,'xtickmode','manual','xtick',[0.2,0.3,0.4,0.5]); set(gca,'ytickmode','manual','ytick',[-10,-3,0,3,10]); subplot(2,2,4) plot(w/pi,dbH); xlabel('\\Omega/\\pi');
ylabel('20log|H(e^j^/omega)|(dB)');grid; axis([0.4 0.7 -100 -50])
set(gca,'xtickmode','manual','xtick',[0.4,0.5,0.6,0.7]); set(gca,'ytickmode','manual','ytick',[-100,-80,-75,-50]); figure(3);
plot(w/pi,pha);%画相频图
xlabel('\\Omega/\\pi');ylabel('Phase/degree');grid subplot
运行,得
As =73.1121 Rp =0.0013
0.80.60.4h(n)0.20-0.20102030n40506070
图23加kaiser窗的FIR带阻滤波器单位冲激响应
1020-220log|H(ej/omega)|(dB)30-320log|H(ej/omega)|(dB)-50-100.20.30.40.5-7520log|H(ej/omega)|(dB)?/?-50-100-75-80-15000.5?/?1-1000.40.50.60.7?/?
图24加kaiser窗的FIR带阻滤波器幅频响应
0-10-20Phase/degree-30-40-50-60-70-8000.10.20.30.40.5?/?0.60.70.80.91
图25加kaiser窗的FIR带阻滤波器相频响应
由程序计算返回的结果和幅频图可以看出,设定阻带衰减为75dB时,在两个阻带截止频率点上衰减并不满足要求。因此将衰减增至80dB,得到返回的阻带最大衰减为77.0511dB,满足要求。由相频响应可以看出,在通带满足线性相位。信号得到无失真传输。