FIR数字滤波器设计作业
周昂 通信工程 201304015027
8.2
设计一个线性相位FIR数字高通滤波器。技术指标为?p?0.7?,?st?0.5?,
As?55dB。画出h(n)及20log|H(ej?)|(dB)及arg|H(ej?)|(dB)曲线。
解:
分析:由于要求阻带最小衰减为55dB,故考虑用blackman窗进行设计。程序如下:
%8.2程序,FIR高通滤波器 clc,clear all; wp=0.7*pi;ws=0.5*pi; dw=abs(ws-wp);%过渡带宽
N0=ceil(11*pi/dw);%计算blackman窗长 N=N0+mod(N0+1,2);%确保N是奇数 n=[0:N-1];
wd=(blackman(N))';%求blakman函数 wc=(wp+ws)/2/pi;%理想低通滤波器的截止频率 hn=fir1(N-1,wc,'high',blackman(N)); [H,w]=freqz(hn,1,1000);%求频率响应 dbH=20*log10(abs(H)); dw=2*pi/1000;
As=-max(dbH(1:wp/dw+1))%检查通带最大衰减 Rp=-min(dbH(ws/dw+1:501))%检查阻带最小衰减 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);
title('幅度响应(db)');xlabel('\\omage/\\pi'); ylabel('20log|H(e^j^/omega)|(dB)'); axis([0,1,-200,5]);grid; subplot(2,2,2) plot(w/pi,dbH);
title('幅度响应(db)');xlabel('\\omage/\\pi'); ylabel('20log|H(e^j^/omega)|(dB)'); axis([0.5,0.9,-10,10]);grid;
set(gca,'xtickmode','manual','xtick',[0.5:0.1:0.9]); set(gca,'ytickmode','manual','ytick',[-10,-3,0,3,10]); subplot(2,2,4) plot(w/pi,dbH);
title('幅度响应(db)');xlabel('\\omage/\\pi'); ylabel('20log|H(e^j^/omega)|(dB)'); grid;
axis([0.3 0.6 -100 -50])
set(gca,'xtickmode','manual','xtick',[0.3:0.1:0.6]); set(gca,'ytickmode','manual','ytick',[-100,-80,-55,-50]); figure(3);
plot(w/pi,pha);%画幅频图
xlabel('数字频率域频率\\Omega/\\pi');ylabel('Phase/degree'); % axis([0,1,-150,5]); grid
运行,得
As =72.3744 Rp = 0.0023
0.50.40.30.2h(n)0.10-0.1-0.2-0.3-0.40102030n405060
图17加blackman窗的FIR高通滤波器单位冲激响应
10-20-4020log|H(ej/omega)|(dB)20log|H(ej/omega)|(dB)030-3-60-80-100-100.50.60.7?/?0.80.9-140-160-180-20000.5?/?120log|H(ej/omega)|(dB)-120-50-55-72-80-1000.30.40.50.6?/?
图18加blakcman窗的FIR高通滤波器幅频响应
100-10-20-30-40-50Phase/degree00.10.20.30.40.5?/?0.60.70.80.91
图19加blackman窗的FIR高通滤波器相频响应
由运行结果可以看出,阻带最小衰减达到了72.37,满足设计指标。由幅频图可以看出,高通滤波器在0.5?取最小衰减,已经达到了题目设计的55dB的指标。由相频响应可以看出,在通带满足线性相位。信号得到无失真传输。
8.3
设计一个线性相位FIR数字带通滤波器。技术指标为?p1?0.4?,?p2?0.5?,
?st?0.2?,?st?0.7?,As?75dB。画出h(n)及20log|H(ej?)|(dB)及
12arg|H(ej?)|(dB)曲线。
解:
分析:由于要求阻带最小衰减为75dB,故考虑用kaiser窗进行设计。用kaiser窗设计时需要根据阻带最小衰减值As计算出beta值,这时kaiser窗与其他窗在使用上的一点区别。 程序如下:
%8.3程序,FIR带通滤波器 clc,clear all;
wp1=0.4*pi;wp2=0.5*pi;
ws1=0.2*pi;ws2=0.7*pi; As0=75;
B=min(wp1-ws1,ws2-wp2);%过渡带宽
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,'bandpass',kaiser(N,beta)); [H,w]=freqz(hn,1,1000);%求频率响应 dbH=20*log10(abs(H)); dw=pi/1000;
Rp=-min(dbH(wp1/dw+1:1:wp2/dw+1))%检查通带最大衰减
As=-max(max(dbH(1:1:ws1/dw+1)),max(dbH(ws2/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; subplot(2,2,2) plot(w/pi,dbH); xlabel('\\Omega/\\pi');
ylabel('20log|H(e^j^/omega)|(dB)');grid; axis([0.3 0.6 -10 10])
set(gca,'xtickmode','manual','xtick',[0.3,0.4,0.5,0.6]); set(gca,'ytickmode','manual','ytick',[-10,-3,0,3,10]);