永发信息网

matlab非线性最小二乘拟合

答案:2  悬赏:0  手机版
解决时间 2021-04-01 05:11
  • 提问者网友:锁深秋
  • 2021-03-31 13:06
matlab非线性最小二乘拟合
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-03-31 13:37
MATLAB的最优化工具箱中提供了lsqcurvefit()函数,可以解决最小二乘曲线拟合的问题,改函数的调用格式为:
[a,J]=lsqcurvefit(Fun,a0,x,y)
其中,Fun未原型函数的MATLAB表示,a0未最优化的初值,x,y为原始输入输出数据向量,调用该函数将可以返回待定系数向量a以及在此待定系数下的目标函数的值J.(详细可以输入 help lsqcurvefit)
具体做法是:
>>U1=inline('f(a,w)','a','w') %用a(i)分别代替六个未知数,i=1~6.
>>[xx,res]=lsqcurvefit(U1,[1 1 1 1 1 1],w,U); xx' % w和U是你试验得出来的数据向量。

结果应该会出现一个ans 向量(6维),分别就是你所要待定的系数a(i)了
全部回答
  • 1楼网友:行雁书
  • 2021-03-31 13:42
我给你个用lsqcurvefit作非线性拟合的例子,你自己照着改一下吧
另外,拟合结果是初值敏感的,因为找到的不一定是全局最优而可能是初值附近的局部最优
function Untitled3
clc
xi=[0.019,0.023,0.027]; % x data
yi=[430,380,256]; % y data
abc0=[4,0.5,5]; % initial values
abc = lsqcurvefit(@fun,abc0,xi,yi)
% target function
function y = fun(abc,x)
y = (abc(1)*(1-x/abc(2))+x/abc(2)).^abc(3);
abc =
31.2588 -3.9585 1.7033
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯