用MATLAB实现信号的时域卷积Word下载.doc
《用MATLAB实现信号的时域卷积Word下载.doc》由会员分享,可在线阅读,更多相关《用MATLAB实现信号的时域卷积Word下载.doc(6页珍藏版)》请在冰豆网上搜索。
);
x2=input('
请输入x2='
y1=input('
请输入y1='
y2=input('
请输入y2='
subplot(131),stem(x1,y1),gridon,title('
y1'
),axis([(min(x1)-1),(max(x1)+1),(min(y1)-1),(max(y1)+1)])
subplot(132),stem(x2,y2),gridon,title('
y2'
),axis([(min(x2)-1),(max(x2)+1),(min(y2)-1),(max(y2)+1)])
%_____________________________________________
xmin1=min(x1);
xmax1=max(x1);
xmin2=min(x2);
xmax2=max(x2);
t=(xmax2+xmax1)-(xmin2+xmin1)+1;
xx=0:
(t-1);
ft=conv(y1,y2)
subplot(133),stem(xx,ft),gridon,title('
*'
)
axis([(min(xx)+0.5),(max(xx)+0.5),(min(ft)-0.5),(max(ft)+0.5)])
⑵调用来完成下面两离散序列的卷积和运算,并绘制图形:
任务
(2)程序:
functionf=ddconv(m1,m2)
%-----------------------------
%离散序列1
t1=m1-5;
t2=m1+5;
t=t1:
t2;
%横坐标
n=length(t);
tt=t1:
m1;
%起始到跳变
n1=length(tt);
f1=[zeros(1,n1-1),ones(1,n-n1+1)];
%subplot(141),stem(t,f1),gridon,title('
阶跃函数序列u(n-m1)'
),axis([t1t2-0.21.5])
%-------------------------------
%离散序列2
p1=m1-5;
p2=m1+5;
p=p1:
p2;
z=length(p);
pp=p1:
m2;
%起始到跳变
z1=length(pp);
f2=[zeros(1,z1-1),ones(1,z-z1+1)];
%subplot(142),stem(p,f2),gridon,title('
离散阶跃序列u(n-m2)'
),axis([p1p2-0.21.5])
%------------------------------------
%两离散序列相减
k=min(min(t),min(p)):
max(max(t),max(p));
%共同横坐标
s1=zeros(1,length(k));
s2=s1;
s1(find((k>
=min(t))&
(k<
=max(t))==1))=f1;
s2(find((k>
=min(p))&
=max(p))==1))=f2;
f=s1-s2;
subplot(131),stem(k,f),gridon,title('
x(n)=u(n)-u(n-4)'
axis([(min(min(t),min(p))-1),(max(max(t),max(p))+1),(min(f)-0.5),(max(f)+0.5)])
subplot(132),stem(k,f),gridon,title('
h(n)=u(n)-u(n-4)'
%----------------------------
xmin1=min(k);
xmax1=max(k);
xmin2=min(k);
xmax2=max(k);
ft=conv(f,f)
h(n)*x(n)'
⑶编制计算连续时间信号卷积积分的M函数,该函数在计算出两信号和的卷积积分的数值近似的同时,还绘制出、和的时域波形图。
实现方法:
与第(4)任务用同一个程序。
⑷调用函数来完成下面两连续时间信号的卷积积分运算,并绘制图形:
,
任务(3、4)程序:
functionsconv()
%u(t)
m1=0;
t1=m1-10;
t2=m1+10;
0.01:
%subplot(131),plot(t,f1),gridon,title('
À
ë
É
¢
½
×
Ô
¾
Ð
ò
Á
u(t)'
%u(t+1/2)
tx1=t-1/2;
fx1=f1;
%subplot(241),stairs(tx1,fx1),gridon,title('
u(t+1/2)'
%u(t-1)
tx2=t+1;
fx2=f1;
%subplot(242),stairs(tx2,fx2),gridon,title('
u(t-1)'
k=min(min(tx1),min(tx2)):
max(max(tx1),max(tx2));
s1=zeros(1,length(k));
=min(tx1))&
=max(tx1))==1))=fx1;
=min(tx2))&
=max(tx2))==1))=fx2;
e=s1-s2;
subplot(131),stairs(k,e),gridon,title('
e(t)=u(t+1/2)-u(t-1)'
axis([(min(min(tx1),min(tx2))+5),(max(max(tx1),max(tx2))-5),(min(e)-0.5),(max(e)+0.5)])
tx3=t;
fx3=f1;
%subplot(243),stairs(tx3,fx3),gridon,title('
tx4=t+2;
fx4=f1;
%subplot(244),stairs(tx4,fx4),gridon,title('
u(t-2)'
k1=min(min(tx3),min(tx4)):
max(max(tx3),max(tx4));
s3=zeros(1,length(k1));
s4=s1;
s3(find((k1>
=min(tx3))&
(k1<
=max(tx3))==1))=fx3;
s4(find((k1>
=min(tx4))&
=max(tx4))==1))=fx4;
h=s3-s4;
%subplot(236),stairs(k1,h),gridon,title('
u(t)-u(t-2)'
%axis([(min(min(tx3),min(tx4))+5),(max(max(tx3),max(tx4))-5),(min(h)-0.5),(max(h)+0.5)])
h(t)=1/2*t*[u(t)-u(t-2)]
kk1=length(k1);
ont=0:
kk1;
ks=min(min(k1),min(ont)):
max(max(k1),max(ont));
s5=zeros(1,length(ks));
s6=s5;
s5(find((ks>
=min(ont))&
(ks<
=max(ont))==1))=ont;
s6(find((ks>
=min(k1))&
=max(k1))==1))=h;
ffu=1/2*(s5.*s6);
subplot(132),stairs(ks,ffu),gridon,title('
1/2*t*[u(t)-u(t-2)]'
axis([-5,5,(min(ffu)-0.5),(max(ffu)+0.5)])
xmin2=min(ks);
xmax2=max(ks);
ttx=(xmax2+xmax1)-(xmin2+xmin1)+0.01;
(ttx-0.01);
ft=conv(e,ffu);
subplot(133),stairs(xx,ft),gridon,title('
axis([15,55,(min(ft)-0.5),(max(ft)+0.5)])
实验总结:
通过本次实验学会了用MATLAB实现线性系统的时域分析。
能自己完成的东西一定要自己独立完成,这样收获的东西才是自己的。