苦肉计
用MATLAB实现信号的时域卷积
摘要:
利用抽样方法绘制连续信号和离散信号。编制函数计算连续时间信号,离散时间信号的卷积。
关键字:
MATLAB;离散卷积;连续卷积
实验原理:
卷积运算在信号与系统分析中具有非常重要的意义,是信号与系统分析的基本方法之一。线性是不变系统的零状态响应就可以通过求解驶入激励信号与系统单位冲击响应的卷积运算获得。
在连续时间系统中,卷积运算成为卷积积分,表示为
在离散时间系统中,卷积运算称为卷积和,表示为:
实验任务及实现方法:
⑴ 编制计算离散时间序列卷积核的M函数,该函数课计算两离散序列rajesh>打单词游戏和的卷积和。程序计算出卷积和的同时,还绘制出序列、和的时域波形图,并返回的非零样值点的对应向量。
任务(1)程序:
function dconv(x1,x2,y1,y2)
%任意两序列卷积
x1=input('请输入x1=');
x2=input('请输入东营一中x2=');
y1=input('请输入y1=');
y2=input('请输入y2=');
subplot(131),stem(x1,y1),grid on,title('y1'),axis([(min(x1)-1),(max(x1)+1),(min(y1)-1),(max(y1)+1)])
subplot(132),stem(x2,y2),grid on,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),grid on,title('*')
axis([(min(xx)+0.5),(max(xx)+0.5),(min(ft)-0.5),(max(ft)+0.5)])
⑵ 调用来完成下面两离散序列的卷积和运算,并绘制图形:
任务(2)程序:
function f=ddconv(m1,m2)
%-----------------------------
%离散序列1
t1=m1-5;
t2=m1+5;
t=t1:t2; %横坐标
n=length(t);
tt=t1:m1; dorian gray%起始到跳变
n1=length(tt);
f1=[zeros(1,n1-1),ones(1,n-n1+1)];
%subplot(141),stem(t,f1),grid on,title('阶跃函数序列 u(n-m1) '),axis([t1 t2 -0.2 1.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)];
cair%subplot(142),stem(p,f2),grid on,title('离散阶跃序列 u(n-m2) '),axis([p1 p2 -0.2 1.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))&(k<=max(p))==1))=f2;
f=s1-s2;
subplot(131),stem(k,f),grid on,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),grid on,title('h(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)])
%----------------------------
翻译 googlexmin1=min(k);
xmax1=max(k);
xmin2=min(k);
xmax2=max(k);
t=(xmax2+xmax1)-(xmin2+xmin1)+1;
xx=0:(t-1);
ft=conv(f,f)
subplot(133),stem(xx,ft),grid on,title('h(n)*x(n)')
axis([(min(xx)+0.5),(max(xx)+0.5),(min(ft)-0.5),(max(ft)+0.5)])
⑶ 编制计算连续时间信号卷积积分的M函数,该函数在计算出两信号和的卷积积分的数值近似的同时,还绘制出、和的时域波形图。
实现方法:与第(4)任务用同一个程序。
⑷ 调用函数来完成下面两连续时间信号的卷积积分运算,并绘制图形:
,
任务(3、4)程序:
function sconv()
%u(t)
m1=0;
t1=m1-10;
t2=m1+10;
t=t1:0.01:t2;
n=length(t);
tt=t1:0.01:m1;
n1=length(tt);
f1=[zeros(1,n1-1),ones(1,n-n1+1)];
%subplot(131),plot(t,f1),grid on,title('ÀëÉ¢½×Ô¾ÐòÁÐ u(t) '),axis([t1 t2 -0.2 1.5])
%u(t+1/2)
tx1=t-1/2;
fx1=f1;
%subplot(241),stairs(tx1,fx1),grid on,title(' u(t+1/2) '),axis([t1 t2 -0.2 1.5])
%u(t-1)
tx2=t+1;
insultfx2=f1;
%subplot(242),stairs(tx2,fx2),grid on,title(' u(t-1) '),axis([t1 t2 -0.2 1.5])
k=min(min(tx1),min(tx2)):0.01:max(max(tx1),max(tx2)); s1=zeros(1,length(k));s2=s1;
s1(find((k>=min(tx1))&(k<=max(tx1))==1))=fx1;
s2(find((k>=min(tx2))&(k<=max(tx2))==1))=fx2;
e=s1-s2;
subplot(131),stairs(k,e),grid reputation什么意思on,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),grid on,title(' u(t) '),axis([t1 t2 -0.2 1.5])
tx4=t+2;
fx4=f1;
%subplot(244),stairs(tx4,fx4),grid on,title(' u(t-2) '),axis([t1 t2 -0.2 1.5])
k1=min(min(tx3),min(tx4)):0.01: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))&(k1<=max(tx4))==1))=fx4;
h=s3-s4;
%subplot(236),stairs(k1,h),grid on,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:0.01:kk1;
ks=min(min(k1),min(ont)):0.01: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))&(ks<=max(k1))==1))=h;
ffu=1/2*(s5.*s6);
subplot(132),stairs(ks,ffu),grid on,title('1/2*t*[u(t)-u(t-2)]')
axis([-5,5,(min(ffu)-0.5),(max(ffu)+0.5)])
xmin1=min(k);
xmax1=max(k);
xmin2=min(ks);
xmax2=max(ks);
ttx=(xmax2+xmax1)-(xmin2+xmin1)+0.01;
xx=0:0.01:(ttx-0.01);
ft=conv(e,ffu);
subplot(133),stairs(xx,ft),grid on,title('h(n)*x(n)')
axis([15,55,(min(ft)-0.5),(max(ft)+0.5)])