林佳展 2021-06-03 00:06 采纳率: 100%
浏览 929
已采纳

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

  • 写回答

4条回答 默认 最新

  • CSDN专家-Matlab_Fans 2021-06-03 04:05
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?