三维曲线(非线性)拟合步骤
(2012-12-08 01:15:55)
标签:
matlab教育 |
分类: matlab |
例如:
function
f=mydata(a,data)
x=data(1,:);
y=data(2,:);
f=a(1)*x+a(2)*x.*y;
例如:
x1=[1.0500 1.0520 1.0530 1.0900 1.0990 1.1020 1.1240 1.1420...
x2=[3.8500 1.6500 2.7500 5.5000 7.7000 3.3000 4.9500 8.2500 11.5500...
ydata=[56.2000 62.8000 62.2000 40.8000 61.4000 57.5000 44.5000 54.8000...
data=[x1;x2];
a0= [-0.0014,0.07];
option=optimset('MaxFunEvals',5000);
format long;
[a,resnorm]=lsqcurvefit(@mydata,a0,data,ydata,[],[],option);
yy=mydata(a,data);
result=[ydata' yy' (yy-ydata)']
%
% [x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
1.function F = myfun(x,xdata)
F = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3; % 可以是任意的
2.然后给出数据xdata和ydata
>>xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
>>ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];
>>x0 = [10, 10,
10];
>>[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)