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

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答