matlab三维曲线的线性拟合,三维曲线(非线性)拟合步骤

三维曲线(非线性)拟合步骤

1 设定目标函数.

(M函数书写)% 可以是任意的

例如:

function

f=mydata(a,data) %y的值目标函数值

或者是第三维的,a=[a(1)

,a(2)]

列向量

x=data(1,:); �ta 是一2维数组,x=x1

y=data(2,:); �ta 是一2维数组,x=x2

f=a(1)*x+a(2)*x.*y; %这里的a(1),

a(2)为目标函数的系数值。

f的值相当于ydata的值

2 然后给出数据xdata和ydata的数据和拟合函数lsqcurvefit

例如:

x1=[1.0500

1.0520 1.0530 1.0900 1.0990 1.1020 1.1240 1.1420…

1.1490 1.0500 1.0520 1.0530 1.0900 1.0990 1.1020 1.1240 1.1420

1.1490];

x2=[3.8500

1.6500 2.7500 5.5000 7.7000 3.3000 4.9500 8.2500

11.5500…

1.6500 2.7500 3.8500 7.7000 3.3000 5.5000 8.2500 11.5500

4.9500];

ydata=[56.2000 62.8000 62.2000 40.8000 61.4000 57.5000

44.5000 54.8000…

53.9000 64.2000 62.9000 64.1000 63.0000 62.2000 64.2000

63.6000…

52.5000 62.0000];

data=[x1;x2]; %类似于将x1 x2整合成一个2维数组。

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)’]

% a的值为拟合的目标函数的参数值

利用lsqcurvefit进行拟合的

它完整的语法形式是:

%

[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)

    原文作者:金融先生-Frank
    原文地址: https://blog.csdn.net/weixin_35639680/article/details/115923288
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞