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

 我来答
themanisjimmy
2016-01-08 · TA获得超过2757个赞
知道小有建树答主
回答量:843
采纳率:89%
帮助的人:233万
展开全部

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;

junjianggfkd
推荐于2018-02-22
知道答主
回答量:33
采纳率:0%
帮助的人:0
展开全部
楼上所说的应该是多项式拟合,最小二乘法是求满足数据的某一函数原型,并求出这组数据待定系数的值,有一点点区别,但是区别不大。Matlab中提供的 lsqcurvefit() 函数。
调用格式:[a,Jm]=lsqcurvefit(Fun,a0,x,y)
Fun为原型函数的matlab表示,可以使M=函数或是inline()函数,a0是最优化的初值,x,y是原始输入数据向量,调用该函数则将返回待定系数向量a以及系数的目标函数Jm。
例:
x=0.1:0.1:1;
y=[2.3201,2.6470,2.9707,3.2886,3.6008,3.9090,4.2147,4.5191,4.8232,5.1275];
%建立Matlab函数原型为M-函数
function y=sss(a,x)
y=a(1)*x+a(2)*x.^2*exp(-a(3)*x)+a(4);
>>a=lsqcurvefit(@sss,[1,2,2,3],x,y)
a=2.4587 2.4489 1.4466 2.0734

参考资料: 精通Matlab

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Zombie玫瑰
2018-03-31 · TA获得超过1.1万个赞
知道小有建树答主
回答量:40
采纳率:100%
帮助的人:6339
展开全部
  • matlab有多种最小二乘法,最简单的最小二乘法是函数lsqlin,可用help lsqlin查看相关解释。

  • 拟合曲线:
    线性最小二乘法,lsqlin;
    非负最小二乘法,lsqnonneg;
    非线性曲线拟合,lsqcurvefit(FUN,X0,XDATA,YDATA) ,最小二乘法拟合。

它解决如下问题:

lsqlin Constrained linear least squares.
X = lsqlin(C,d,A,b) attempts to solve the least-squares problem
min  0.5*(NORM(C*x-d)).^2       subject to    A*x <= b

  • 该文研究工程结构可靠性分析中的随机变量模型、系统模型以及阶梯过程模型等若干模型可靠度及可靠性设计表达式系数的计算及其MATLAB程序设计 。

  • 提出了设计基本变量相关的结构功能函数可靠性分析的一次二阶矩方法和化相关基本变量为不相关基本变量的初等。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钺小夏侯pf
2015-10-16 · TA获得超过2460个赞
知道小有建树答主
回答量:578
采纳率:69%
帮助的人:388万
展开全部
fz=@(z,x) z(1)*x.^2+z(2)*x+z(3),...
'z','x';
[z,resnorm,residual,exitflag,output] = lsqcurvefit(fz,z0,x,y,[],[],options)
z0为系数矩阵初值
一般评价最小二乘非线性拟合不是用相关性系数,而是用residual,残差或残差平方和
再有一种是用nonfit,很简单的一种非线性回归,不用写函数格式

我没有看清楚,不好意思,所谓偏最小二乘法,就是指在做基于最小二乘法的线性回归分析之前,对数据集进行主成分分析降维,将最后得到的主成分作为输入的x,你可以看一下princomp这个函数是进行主成分分析的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式