最小二乘法matlab实现


前言

最小二乘法是一种在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域得到广泛应用的数学工具。


1 polyfit多阶拟合

x,y为离散点数据。

p=polyfit(x,y,n)
最小二乘法计算拟合多项式系数。x,y为拟合数据向量,要求维度相同,n为拟合多项式次数(即拟合函数的阶数)。返回p(p是一个向量)保存多项式系数,由最高次向最低次排列。

y = p ( 1 ) ⋅ x n + p ( 2 ) ⋅ x n − 1 + ⋅ ⋅ ⋅ + p ( n ) ⋅ x 1 + p ( n + 1 ) y= p(1)·x^n + p(2)·x^{n-1} +···+p(n)·x^1+p(n+1) y=p(1)xn+p(2)xn1++p(n)x1+p(n+1)

y1=polyval(p,x)
计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序。

自变量x中不重复的元素个数m,和拟合阶数k需要满足m>=k+1。简单分析:k阶拟合需要确定k+1个未知参数(如1阶拟合y = ax + b需要确定a和b两个参数),故而至少需要k+1个方程,故而需要至少k+1个不同的已知数对(x,y),由于函数中x只能对应一个y,故而需要至少k+1个不同的x。

plot(x,y,'·',x,y1,'-')
画图。

2 lsqnonlin非线性拟合

x=lsqnonlin('fun',x0)
fun是函数文件,x0是迭代初值。

函数文件

function r=fun(t)
%x,y为离散点数据。
x=[];
y=[];

%函数
r=x-t(1)*exp(t(2)*y);
x0=[];
%得到系数
t=lsqnonlin('fun',x0);

%结果可视化
y=[];
x=t(1)*exp(t(2)*y);
plot(x,y,'·');

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤影墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值