使用拟合函数lsqcurvefit确定参数,报错显示输入参数的数目不足?(语言-matlab)

问题遇到的现象和发生背景

先从.mat文件获取数据(这部分没问题),然后通过lsqcurvefit函数进行拟合获取参数,却总是提示输入的参数数目不足。

代码:

open_system('M2.slx');
sim('M2.slx');
load dataty.mat;

t=data1.Time;
y=data1.Data;
x0=[0 0 0];

x=lsqcurvefit(fun,x0,t,y)

function out = fun (x,t)
K=x(1);
s1=-x(2)x(3)+x(3)sqrt((x(2))^2-1);
s2=-x(2)x(3)-x(3)sqrt((x(2))^2-1);
if x(2)>1
out=K
(1+(s2
exp(s1
t)-s1
exp(s2t)/(s1-s2)));
elseif x(2)==1
out=K
(1-exp(-x(3)*t)-x(3)texp(-x(3)t));
elseif x(2)>0 && x(2)<1
out=K
(1-exp(-x(2)*x(3)*t)*sin(sqrt(1-(x(2))^2)*x(3)t+atan(sqrt(1-(x(2))^2)/x(2)))/sqrt(1-(x(2))^2));
else
out=K
(1-cos(x(3)*t));
end
end

运行结果及报错内容

输入参数的数目不足。

出错 M2_count>fun (第 12 行)
K=x(1);

出错 M2_count (第 9 行)
x=lsqcurvefit(fun,x0,t,y)