[转载]matlab_最小二乘法数据拟合
2018-10-14 12:22 a往南向北 阅读(7967) 评论(0) 编辑 收藏 举报原文地址:matlab_最小二乘法数据拟合作者:彭国民
定义:
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最
小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可
以简便地求得未知的数据,并使得这些求得的数据与实际数据之
间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一
些优化问题也可通过最小化能量或最大化熵用最小二乘法来表
达。
多项式:
1.2 matlab中函数
用三次多项式曲线拟合这些数据点:
x=0:0.1:1
y=[-
0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.
2]
plot(x,y,\'k.\',\'markersize\',25)
hold on
axis([0 1.3 -2 16])
p3=polyfit(x,y,3)
t=0:0.1:1.2:
S3=polyval(P3,t);
plot(t,S3,\'r\');
线拟合然后比较各自的residal(均方误差)越小者为优,
多项式拟合不是拟合次数越高越好,而是残差越小越好。
2.非线性曲线拟合:lsqcurvefit
X=lsqcurvefit(fun,X0,xdata,ydata)
[X,resnorm]=lsqcurvefit(fun,X0,xdata,ydata)
注:其中xdata ydata为给定数据横纵坐标,按照函数文件fun
给定的函数以X0为初值做最小乘二拟合,返回函数fun中的
系数向量X和残差的平方和resnorm。
2.1例如
已知观测数据:
求三个参数a b c的值是的曲线f(x)=a*e^x+b*X^2+c*X^
已知数据点在最小二乘意义上充分接近
首先编写拟合函数文件fun
function f=fun(X,xdata)
f=X(1)*exp(xdata)+X(2)*xdata.^2+X(3)*xdata.^3
保存文件fun.m
编写函数调用拟合函数文件
xdata=0:0.1:1;
ydata=[3.1 3.27 3.81 4.5 5.18 6 ....13.17];
X0=[0 0 0];
[X,resnorm]=lsqcurvefit(@fun,X0,xdata,ydata)
运行显示:
X=
3.0022 4.0304 0.9404
resnorm=
0.0912
综上:最小乘二意义上的最佳拟合函数为
f(x)=3.0022x+4.0304x^2+0.9404x^3
残差平方和:0.0912
采取先打印出已知数据的散点图,然后观察散点图大概分布
趋向,再确定拟合函数,也可以确定多个,最后比较残差选
择最优最小乘二拟合函数,再者初始值的给定也很重要。
lsqnonlin(fun,X0):最小二乘拟合函数
本讲结束,谢谢!