当前位置:首页 > 代码 > 正文

matlab非线性最小二乘法代码(matlab线性最小二乘拟合代码)

admin 发布:2022-12-19 19:37 216


今天给各位分享matlab非线性最小二乘法代码的知识,其中也会对matlab线性最小二乘拟合代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

matlab,非线性最小二乘,怎样设定能让最后一个点必然拟合上,请大侠帮我编程,感激不尽

你可以用 nlinfit()函数去拟合,其拟合精度要比 lsqcurvefit()高。

运行结果如下:

拟合得到的结果为:

W^0.88933 = 308.1428* N^1.5649/(693566.3726-N)

拟合得到的R square 为:

R^2 = 0.99993

代码作了相应的调整。

matlab 非线性最小二乘法程序,请大侠帮我修改,编个正确的程序,非常感谢

1、对于非线性拟合函数(如指数函数等)用lsqcurvefit()函数的精度要比 nlinfit()函数要低。对于本例,用lsqcurvefit()函数nlinfit()函数0.95861,而nlinfit()函数nlinfit()函数0.99905。

2、自定义函数curvefun1(a,x)定义不够合理,还需要加一个绝对值符号,即f=abs((a(1).*x.^a(2))./(a(3)-x)).^(1/a(4)),这是指数方程的性质所决定。

3、自定义函数方程中有一个错误,'/'应为'./'。缺一个小点。

4、初值选定不合理,对于本例a0 =b=[-0.8   -0.2   -0.9   -0.3]

5、本例的拟合结果如下

a =[ -307506534.2, -1.122708895, -2085623.768, -0.6827697455]

即a(1)=b;a(2)=p;a(3)=R;a(4)=q

非线性最小二乘法matlab来求y=a/(b*x+c)

三个数,求三个变量。效果肯定不是很好。

在matlab下输入:edit

zhidao_15.m,然后将下面两行百分号之间的内容,复制进去,保存

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function

y=zhidao_15(para,x)

y0=para(1);

a=para(2);

b=para(3);

y=y0+a*x.^b;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在matlab下面输入:

x=[1,2,3,4,5,8];

%我这里多给一些数据

y=2.3+1.2*x.^1.302+0.1*rand(size(x));

%这里加了一些扰动

[para,res]=lsqcurvefit('zhidao_15',ones(1,3),x,y);

para',res

plot(x,y,'r*',x,zhidao_15(para,x))

怎么用matlab实现非线性最小二乘拟合

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

最小二乘法在matlab中怎么实现啊?

matlab中用最小二乘拟合的常用函数有polyfit(多项式拟合)、nlinfit(非线性拟合)以及regress(多元线性回归)。自变量有2个或以上时,应变量一个,可以使用的有nlinfit和regress,线性时用regress,非线性时用nlinfit。对于进阶matlab使用者还有更多的选择,如拟合工具箱、fit函数、interp系列插值拟合等等。

具体介绍一下regress

regress虽然名义上只能做线性回归但是可以把x^2等非线性量作为一个额外自变量做计算,因此在一些特殊情况下也可以做非线性拟合。

以matlab自带的数据为样本,示例代码如下:(%后面的是注释)

clc;clear;

load carsmall%此数据样本matlab自带

x=Weight;y=Horsepower;z=MPG;%取这3个变量作为拟合对象,x、y自变量,z应变量

plot3(x,y,z,'p');

hold on;

c=ones(length(x),1);

b=regress(z,[x,y,c]);%纯线性拟合 模型z=b(1)*x+b(2)*y+b(3)

[X,Y]=meshgrid(linspace(1500,5000,10),linspace(40,240,10));

C=ones(10);

mesh(X,Y,b(1)*X+b(2)*Y+b(3)*C);

grid on;

b=regress(z,[x.^2,y.^2,x.*y,x,y,c]);%添加非线性项进行拟合

figure

plot3(x,y,z,'p');

hold on;

mesh(X,Y,b(1)*X.^2+b(2)*Y.^2+b(3)*X.*Y+b(4)*X+b(5)*Y+b(6)*C);

grid on;

如何用matlab实现非线性最小二乘拟合

可以调用matlab中的polyfit函数,其数学原理是最小二乘法曲线拟合法。

格式如下:

A=polyfit(xdata,ydata,n);

其中n表示多项式的最高阶数;

xdata,ydata为将要拟合的数据;

matlab非线性最小二乘法代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于matlab线性最小二乘拟合代码、matlab非线性最小二乘法代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/20891.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载