用matlab进行两个连续信号的卷积出错,卷积使用的函数是老师提供了,例程是可以进行的,但是完成进行其他比如我这个就会报错,向量长度必须相同,请问这里要怎么修改呢,我猜测应该是k1,k2的参数需要修改,但是不太明白要怎么修改,还是其他的参数需要修改呢,下面附上图片以及源码
自己写的:
t=-5:0.01:5;
f1=[(t>=-2)&(t<=1)].*(-t);
subplot(311)
plot(t,f1)
subplot(312)
f2=[(t>=0)&(t<=1)];
plot(t,f2)
subplot(313)
p=0.01;
k1=-2:p:1;
k2=0:p:1;
[f,k]=sconv(f1,f2,k1,k2,p)
老师提供的卷积函数代码
function [f,k]=sconv(f1,f2,k1,k2,p)
f=conv(f1,f2);%f为 序列f1与f2的卷积和
f=f*p;
k0=k1(1)+k2(1); %计算序列f非零样值的起点位置
k3=length(f1)+length(f2)-2; %计算卷积和f的非零样值的宽度
k=k0:p:k3*p; %确定卷积和f非零样值的时间向量
subplot(3,1,1);plot(k1,f1);title('f1(t)');xlabel('t');ylabel('f1(t)');
subplot(3,1,2);plot(k2,f2);title('f2(t)');xlabel('t');ylabel('f2(t)');
subplot(3,1,3);plot(k,f);title( 'f(t)');xlabel('t');ylabel( 'f(t) ')