实验11用MATLAB设计FIR数字滤波器.doc
文本预览下载声明
实验11 用MATLAB设计FIR数字滤波器
一、实验目的:
1、加深对窗函数法设计FIR数字滤波器的基本原理的理解。
2、学习用MATLAB语言的窗函数法编写设计FIR数字滤波器的程序。
3、了解MATLAB语言有关窗函数法设计FIR数字滤波器的常用函数用法。
二、实验内容及步骤
2、选择合适的窗函数设计FIR数字低通滤波器,要求: wp=0.2,Rp=0.05dB; ws=0.3,As=40dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。
分析:根据设计指标要求,并查表11-1,选择汉宁窗。程序清单如下:
function hd=ideal_lp(wc,N)
wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp;
tao=(N-1)/2;
n=[0:(N-1)];
m=n-tao+eps; hd=sin(wc*m)./(pi*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);
wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp;
wc=(ws+wp)/2;
N0=ceil(6.6*pi/deltaw);
N=N0+mod(N0+1,2)
windows=(hanning(N));
hd=ideal_lp(wc,N);
b=hd.*windows;
[db,mag,pha,grd,w]=freqz_m(b,1);
n=0:N-1;dw=2*pi/1000;
Rp=-(min(db(1:wp/dw+1))) %检验通带波动
As=-round(max(db(ws/dw+1:501))) %检验最小阻带衰减
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,-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);
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,[-3.1416,0,3.1416,4]);grid
N =67
Rp =0.0706
As = 44
3、用凯塞窗设计一个FIR数字高通滤波器,要求: wp=0.3,Rp=0.1dB;ws=0.2,As=50dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。
程序清单如下:
function hd=ideal_lp(wc,N)
tao=(N-1)/2;
n=[0:(N-1)];
m=n-tao+eps;
hd=sin(wc*m)./(pi*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);
wp=0.3*pi;ws=0.2*pi;
deltaw=wp-ws;
N0=ceil(6.6*pi/deltaw);
N=N0+mod(N0+1,2)
windows=(kaiser(N,7.865));
wc=(ws+wp)/2;
hd=ideal_lp(p
显示全部