作业帮 > 综合 > 作业

关于matlab,simulink仿真问题,一直有Error in fun (line 2) k=x(1);,调用lsq

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/05/29 20:07:02
关于matlab,simulink仿真问题,一直有Error in fun (line 2) k=x(1);,调用lsqcurvefit就出错
open_system('sim1');
sim('sim1');
load dataty.mat;
x0=[1,2,2];
t=out(1,:);
y=out(2,:);
x=lsqcurvefit('fun',x0,t,y);
plot(t,fun(x,t),'-',t,y,'-*');
function y=fun(x,t)
k=x(1);
zeta=x(2);
omega=x(3);
s1=-zeta.*omega+omega.*sqrt(zeta.^2-1);
s2=-zeta.*omega-omega.*sqrt(zeta.^2-1);
if zeta>1
y=k*(1+(s2.*exp(s1.*t)-s1.*exp(s2.*t))/(s1-s2));
elseif zeta==1
y=k*(1-exp(-omega.*t)-omega.*t.*exp(-omega.*t));
elseif zeta>0&&zeta
关于matlab,simulink仿真问题,一直有Error in fun (line 2) k=x(1);,调用lsq
你这个function没 end或者结束语句
其它看不出来,没有完整的仿真文件等,没法判断
再问: end有,漏掉了,simulink仿真的传递函数是4/(s^2+8s+4),然后x0=[1,2,2];就不行,传递函数是0.25/(s^2+2s+0.25)然后x0=[1,2,0.25];就能出图像,这是怎么回事
再答: 这个,你光说我也看不出来 而且,你的分支最后是有问题的 最后一个不应该是elseif,而是else 发到我邮箱吧,就这个id,@126.com