最小二乘法在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;

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-22
楼上所说的应该是多项式拟合,最小二乘法是求满足数据的某一函数原型,并求出这组数据待定系数的值,有一点点区别,但是区别不大。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

本回答被网友采纳
第2个回答  2018-03-31

    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程序设计 。

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

本回答被网友采纳
第3个回答  2015-10-16
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这个函数是进行主成分分析的
相似回答