matlab做连续信号的卷积报错向量长度必须相同

用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) ')
 

k1和f1的向量长度应该相同,建议令k1= t。

经过上面老哥的提示,我用size函数看了一下k和f的维度,分别是1 3001和1 2001,修改代码如下:subplot(3,1,3);plot(k(1:end-1000),f);title( 'f(t)');xlabel('t');ylabel( 'f(t) '),结果不报错了

结果如上

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632