加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2012-12-08 01:15:55)
标签:

matlab

教育

分类: matlab

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

 

  设定目标函数. 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的值

 

  然后给出数据xdataydata的数据和拟合函数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.然后给出数据xdataydata

 

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有