作业帮 > 综合 > 作业

lsqcurvefit在matlab中拟合多元函数问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 23:40:39
lsqcurvefit在matlab中拟合多元函数问题
这是M文件:
function F=myfun(x,data)
F=x(1)+x(2)*xdata(:,1)+x(3)*xdata(:,1).^2+x(4)*xdata(:,2)+x(5)*data(:,2).^2;
下面是数据:
xdata=[14.9,0.8;13.6,0.62;13.6,0.98;16.2,0.98;16.2,0.62];
ydata=[111729.4346 111742.47 111742.4947 111738.3368 111738.2256];
x0=[10,1]
[x,resnorm]=lsqcurvefit(@myfun,x0,xdata,ydata)
提示错误:function F=myfun(x,data)
|
Error:Function definitions are not permitted in this context.
Error using ==> feval
Undefined function or method 'myfun' for input arguments of type 'double'.
Error in ==> lsqcurvefit at 209
initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});
Caused by:
Failure in initial user-supplied objective function evaluation.LSQCURVEFIT cannot continue.
function有问题 应该为xdata 而不是data
function F=myfun(x,xdata)
F=x(1)+x(2)*xdata(:,1)+x(3)*xdata(:,1).^2+x(4)*xdata(:,2)+x(5)*xdata(:,2).^2;
再问: 改过了。。。可是还是不行啊。。。
再答: x有五个参数 x0只有2个初值 xdata=[14.9,0.8;13.6,0.62;13.6,0.98;16.2,0.98;16.2,0.62]; ydata=[111729.4346 111742.47 111742.4947 111738.3368 111738.2256]; x0=[1:5]; F=@(x,xdata)x(1)+x(2)*xdata(:,1)+x(3)*xdata(:,1).^2+x(4)*xdata(:,2)+x(5)*xdata(:,2).^2; [x,resnorm]=lsqcurvefit(F,x0,xdata,ydata') Solver stopped prematurely. lsqcurvefit stopped because it exceeded the function evaluation limit, options.MaxFunEvals = 500 (the default value). x = 1.0e+004 * 0.9826 1.4089 -0.0473 -0.6467 0.4078 resnorm = 3.6801e+005