这是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.
改过了。。。可是还是不行啊。。。
追答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