先从.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+(s2exp(s1t)-s1exp(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)