实验报告.docx
- 文档编号:23477195
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:19
- 大小:420.41KB
实验报告.docx
《实验报告.docx》由会员分享,可在线阅读,更多相关《实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
实验报告
实验报告四
专业:
电子信息工程班级:
09电子
(1)班指导老师:
马英辉
姓名:
陈亚男学号:
20090306104实验室:
306
实验名称:
数字滤波器的MATLAB实现实验时间:
2011.09.19
一、实验目的:
1.掌握IIR和FIR滤波器的基本结构
2.学会使用MATLAB实现数字滤波器
二、实验内容及步骤
1.直接形式
b=[1,-3,11,27,18];a=[16,12,2,-4,-1];
N=25;
h=impz(b,a,N);
x=[ones(1,5),zeros(1,N-5)];
y=filter(b,a,x);
subplot(1,2,1);stem(h);title('直线型h(n)');
subplot(1,2,2);stem(y);title('直线型y(n)');
程序运行结果:
2.级联形式
①impseq.m
function[x,n]=impseq(n0,ns,nf)
n=[ns:
nf];x=[(n-n0)==0];
②casfilter.m
functiony=casfilter(b0,B,A,x);
[K,L]=size(B);
N=length(x);
w=zeros(K+1,N);
w(1,:
)=x;
fori=1:
1:
K
w(i+1,:
)=filter(B(i,:
),A(i,:
),w(i,:
));
end
y=b0*w(K+1,:
);
利用上述函数,实现波形MATLAB程序如下:
b0=4;B=[1,1,0;1,-1.4142136,1];A=[1,-0.5,0;1,0.9,0.81];
N=60;
delta=impseq(0,0,N);
h=casfilter(b0,B,A,delta);
x=[ones(1,5),zeros(1,N-5)];
y=casfilter(b0,B,A,x);
subplot(1,2,1);stem(h);title('级联型h(n)');
subplot(1,2,2);stem(y);title('级联型y(n)');
程序运行结果:
3.并联形式
①impseq.m
function[x,n]=impseq(n0,ns,nf)
n=[ns:
nf];x=[(n-n0)==0];
②parfilter.m
functiony=parfilter(C,B,A,x);
[K,L]=size(B);
N=length(x);
w=zeros(K+1,N);
w(1,:
)=filter(C,1,x);
fori=1:
1:
K
w(i+1,:
)=filter(B(i,:
),A(i,:
),x);
end
y=sum(w);
利用上述函数,实现波形MATLAB程序如下:
C=0;B=[-14.75,-12.90;24.50,26.82];A=[1,-7/8,3/32;1,-1,0.5];
N=60;
delta=impseq(0,0,N);
h=parfilter(C,B,A,delta);
x=[ones(1,5),zeros(1,N-5)];
y=parfilter(C,B,A,x);
subplot(1,2,1);stem(h);title('并联型h(n)');
subplot(1,2,2);stem(y);title('并联型y(n)');
程序运行结果:
4.级联形式
①impseq.m
function[x,n]=impseq(n0,ns,nf)
n=[ns:
nf];x=[(n-n0)==0];
②dir2cas.m
function[b0,B,A]=dir2cas(b,a);
b0=b
(1);b=b/b0;
a0=a
(1);a=a/a0;
b0=b0/a0;
M=length(b);N=length(a);
ifN>M
b=[bzeros(1,N-M)];
elseifM>N
a=[azeros(1,M-N)];N=M;
else
NM=0
end
end
K=floor(N/2);B=zeros(K,3);A=zeros(K,3);
ifK*2==N;
b=[b0];
a=[a0];
end
broots=cplxpair(roots(b));
aroots=cplxpair(roots(a));
fori=1:
2:
2*K
Brow=broots(i:
1:
i+1,:
);
Brow=real(poly(Brow));
B(fix((i+1)/2),:
)=Brow;
Arow=aroots(i:
1:
i+1,:
);
Arow=real(poly(Arow));
A(fix((i+1)/2),:
)=Arow;
end
③casfilter.m
functiony=casfilter(b0,B,A,x);
[K,L]=size(B);
N=length(x);
w=zeros(K+1,N);
w(1,:
)=x;
fori=1:
1:
K
w(i+1,:
)=filter(B(i,:
),A(i,:
),w(i,:
));
end
y=b0*w(K+1,:
);
利用上述函数,
实现波形MATLAB程序如下:
n=0:
5;
b=0.2.^n;
N=30;
delta=impseq(0,0,N);
h=filter(b,1,delta);
x=[ones(1,5),zeros(1,N-5)];
y=filter(b,1,x);
subplot(2,2,1);stem(h);
title('直接型h(n)');
subplot(2,2,2);stem(y);
title('直接型y(n)');
[b0,B,A]=dir2cas(b,1);
h=casfilter(b0,B,A,delta);
y=casfilter(b0,B,A,x);
subplot(2,2,3);stem(h);
title('级联型h(n)');
subplot(2,2,4);stem(y);
title('级联型y(n)');
程序运行结果:
实验报告五
专业:
电子信息工程班级:
09电子
(1)班指导老师:
马英辉
姓名:
陈亚男学号:
20090306104实验室:
306
实验名称:
数字滤波器的MATLAB实现实验时间:
2011.11.21
一、实验目的:
1.掌握模拟滤波器的设计
2.掌握用双线性变换法设计IIR数字滤波器
二、实验内容及步骤:
1、试用双线性变换法设计一低通滤波器给定技术指标是fp=100Hz,fst=300Hz,αp=3dB,αp=3dB,αp=20dB,抽样频率为Fs=1000Hz。
clearall;
fp=100;fs=300;Fs=1000;
rp=3;rs=20;
wp=2*pi*fp/Fs;
ws=2*pi*fs/Fs;
Fs=Fs/Fs;
wap=tan(wp/2);
was=tan(ws/2);
[n,wn]=buttord(wap,was,rp,rs,'s');
[z,p,k,]=buttap(n);
[bp,ap]=zp2tf(z,p,k);
[bs,as]=lp2lp(bp,ap,wap);
[bz,az]=bilinear(bs,as,Fs/2);
[h,w]=freqz(bz,az,256,Fs*1000);
plot(w,abs(h));gridon;
程序运行结果:
bs=0.1056
as=1.00000.45950.1056
bz=0.06750.13490.0675
az=1.0000-1.14300.4128
2、试用双线性变换法设计一低通滤波器给定技术指标是fp=100Hz,fst=300Hz,αp=3dB,αp=3dB,αp=20dB,抽样频率为Fs=1000Hz。
clearall;
fp=100;fs=300;Fs=1000;
rp=3;rs=20;
wp=2*pi*fp/Fs;
ws=2*pi*fs/Fs;
Fs=Fs/Fs;
wap=tan(wp/2);
was=tan(ws/2);
[n,wn]=buttord(wap,was,rp,rs,'s');
[z,p,k,]=buttap(n);
[bp,ap]=zp2tf(z,p,k);
[bs,as]=lp2lp(bp,ap,wap);
[bz,az]=bilinear(bs,as,Fs/2);
[h,w]=freqz(bz,az,256,Fs*1000);
plot(w,abs(h));gridon;
程序运行结果:
n=2
wn=0.4363
bs=0.1056
as=1.00000.45950.1056
bz=0.06750.13490.0675
az=1.0000-1.14300.4128
3、设计低通数字滤波器,要求在通带内频带低于0.2pirad时,允许幅度误差在1dB,以内,在频率0.3pirad~1pirad之间的阻带衰减大于15dB。
用脉冲响应不变法设计数字滤波器,T=1,模拟滤波器采用巴特沃兹滤波器原型。
(1)function[b,a]=u_buttap(N,OmegaC);
[z,p,k]=buttap(N);
p=p*OmegaC;
k=k*OmegaC^N;
B=real(poly(z));
b0=k;
b=k*B;
a=real(poly(p));
(2)function[b,a]=afd_butt(Wp,Ws,Rp,As);
ifWp<=0
error('Passbandedgemustbelargerthan0')
end
ifWs<=Wp
error('StopbandedgemustbelargerthanPassededge')
end
if(Rp<=0)|(As<0)
error('PBrippleand/OrSBattenuationmustbelargerthan0')
end
N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(Wp/Ws)));
OmegaC=Wp/((10^(Rp/10)-1)^(1/(2*N)));
[b,a]=u_buttap(N,OmegaC);
(3)function[db,mag,pha,w]=freqs_m(b,a,wmax);
w=[0:
1:
500]*wmax/500;
H=freqs(b,a,w);
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
(4)function[C,B,A]=sdir2cas(b,a);
Na=length(a)-1;Nb=length(b)-1;
b0=b
(1);b=b/b0;
a0=a
(1);a=a/a0;
C=b0/a0;
p=cplxpair(roots(a));K=floor(Na/2);
ifK*2==Na
A=zeros(K,3);
forn=1:
2:
Na
Arow=p(n:
1:
n+1,:
);Arow=poly(Arow);
A(fix((n+1)/2),:
)=real(Arow);
end
elseifNa==1
A[0real(poly(p))];
else
A=zeros(K+1,3);
forn=1:
2:
2*K
Arow=p(n:
1:
n+1,:
);Arow=poly(Arow);
A(fix((n+1)/2),:
)=real(Arow);
end
A(K+1,:
)=[0real(poly(p(Na)))];
end
z=cplxpair(roots(b));K=floor(Nb/2);
ifNb==0
B=[00poly(z)];
elseifK*2==Nb
B=zeros(K,3);
forn=1:
2:
Nb
Brow=z(n:
1:
n+1,:
);Brow=poly(Brow);
B(fix((n+1)/2,:
))=real(Brow);
end
elseifNb==1
B=[0real(poly(z))];
else
B=zeros(K+1,3);
forn=1:
2:
2*K
Brow=z(n:
1:
n+1,:
);Brow=poly(Brow);
B(fix((n_1)/2),:
)=real(Brow);
end
B(K+1,:
)=[0real(poly(z(Nb)))];
end
(5)Wp=0.2*pi;Wr=0.3*pi;Ap=1;Ar=15;T=1;
Omegap=(2/T)*tan(Wp/2);Omegar=tan(2/T)*(Wr/2);
[cs,ds]=afd_butt(Omegap,Omegar,Ap,Ar)
[C,B,A]=sdir2cas(cs,ds);
[db,mag,pha,Omega]=freqs_m(cs,ds,pi);
subplot(234);plot(Omega/pi,mag);title('模拟滤波器幅度响应|Ha(j\Omega)|');
[b,a]=bilinear(cs,ds,T);
[h,n]=impz(b,a);
[C,B,A]=dir2cas(b,a);
[db,mag,pha,grd,w]=freqz_m(b,a);
subplot(231);plot(w/pi,mag);title('数字滤波器幅度响应|H(j\Omega)|');
subplot(232);plot(w/pi,db);title('数字滤波器幅度响应(dB)');
subplot(233);plot(w/pi,pha/pi);title('数字滤波器相位响应');
subplot(235);plot(n,h);title('脉冲响应');
delta_w=2*pi/1000;
Ap=-(min(db(1:
1:
Wp/delta_w+1)))
Ar=-round(max(db(Wr/delta_w+1:
1:
501)))
程序运行结果:
Cs=0.1480
ds=Columns1through5
1.00002.81003.94823.51682.0884
Columns6through7
0.78620.1480
NM=0
C=5.7969e-004
B=1.00002.03351.0338
1.00001.99961.0000
1.00001.96690.9673
A=1.0000-0.94590.2342
1.0000-1.05410.3753
1.0000-1.31430.7149
Ap=1.0000
Ar=18
实验结论:
1.学到了关于如何在MatLab软件上实现数字滤波器的设计与实现对现实数字波形的滤波处理。
2.熟悉了用双线性变换法设计IIR数字滤波器的原理与方法,学会调用MATLAB信号处理工具箱中滤波器设计函数,设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
3.掌握了IIR数字滤波器的MATLAB实现方法。
通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。
实验报告六
专业:
电子信息工程班级:
09电子
(1)班指导老师:
马英辉
姓名:
陈亚男学号:
20090306104实验室:
306
实验名称:
应用MATLAB设计FIR数字滤波器实验时间:
2011.11.27
1、实验目的:
1、掌握各种窗函数
2、掌握用窗函数设计FIR数字滤波器原理和方法
二、实验内容及步骤:
1、用汉宁窗设计线性相位FIR低通滤波器,并满足性能指标;带通边界频率wp=0.5pi,阻带边界频率ws=0.66pi,阻带衰减不小于40dB,带通波纹不大于3dB。
wp=0.5*pi;ws=0.66*pi;
wdelta=ws-wp;
N=ceil(8*pi/wdelta)
ifrem(N,2)==0
N=N+1;
end
Nw=N;
wc=(ws+wp)/2;
n=0:
N-1;
alpha=(N-1)/2;
m=n-alpha+0.00001;
hd=sin(wc*m)./(pi*m);
win=hanning(Nw);
h=hd.*win';
b=h;
freqz(b,1,512)
2、令N=10,分别用矩形窗和汉明窗设计低通滤波器,所希望的频率响应截止频率Hd(ejw)在0≤W≤0.25pi之间为1,在0.25pi≤W≤pi之间为0,观察频谱响应的特点。
clearall;
N=10;
b1=fir1(N,0.25,boxcar(N+1));
b2=fir1(N,0.25,hamming(N+1));
M=128;
h1=freqz(b1,1,M);
h2=freqz(b2,1,M);
t=0:
10;
subplot(121)
stem(t,b2,'.');holdon;
plot(t,zeros(1,11));grid;
f=0:
0.5/M:
0.5-0.5/M;
M1=M/4;
fork=1:
M1
hd(k)=1;
hd(k+M1)=0;
hd(k+2*M1)=0;
hd(k+3*M1)=0;
end
subplot(122)
plot(f,abs(h1),'b-',f,abs(h2),'g-',f,hd,'--');grid;
程序运行结果:
实验结论:
通过本次关于IIR数字滤波器的设计及软件实现实验,我学到了关于如何在MatLab软件上实现数字滤波器的设计与实现对现实数字波形的滤波处理。
熟悉用双线性变换法设计IIR数字滤波器的原理与方法,学会调用MATLAB信号处理工具箱中滤波器设计函数,设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
掌握了IIR数字滤波器的MATLAB实现方法。
通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告