关于matlab,simulink仿真问题,一直有Error in fun (line 2) k=x(1);,调用lsq
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/09/21 08:19:58
关于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
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
你这个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
其它看不出来,没有完整的仿真文件等,没法判断
再问: 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
关于matlab,simulink仿真问题,一直有Error in fun (line 2) k=x(1);,调用lsq
关于matlab/simulink仿真过程出现的问题!
matlab中simulink仿真的问题
matlab simulink仿真绘图小问题
关于matlab/simulink仿真过程出现的inf和NaN问题!
matlab里的Simulink仿真中sum元件怎么关于X轴对称
MATLAB/Simulink仿真时出现下面的问题,
模糊PID控制器matlab simulink仿真的问题
matlab/simulink仿真出现错误,
如何有matlab中的遗传算法仿真出y=x^2+(-1)的极值点
MATLAB/SIMULINK问题
MATLAB中function error=fun(x,y),fun是什么意义啊?