最小二乘法求拟合曲线(中线)的斜率和截距

最小二乘法:

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最 小,简单来说,就是通过最小化误差的平方和,使得拟合对象无限接近目标对象,这就是最小二乘的核心思想。最小二乘法还可用于曲线拟合。

在此先列举一下最小二乘家族成员。最小二乘法直线拟合,最小二乘法多项式(曲线)拟合,机器学习中线性回归的最小二乘法,系统辨识中的最小二乘辨识法,参数估计中的最小二乘法,等等

这里我们要说的是最小二乘法拟合曲线的斜率。

拟合直线作用:

在我们做一些处理的时候,得到的数据可能是一些离散的点,而我们往往希望得到一个连续的函数(也就是拟合直线)或者更加密集的离散方程与已知数据相吻合,这过程就叫做拟合,
在这里插入图片描述
概念与公式:
说到最小二乘法,可能有的同学说没学过,但是我们给出公式应该同学们会说:哦!原来是他啊。

推导:
在这里插入图片描述
即为:
在这里插入图片描述
最小二乘法多项式直线拟合,就是根据给定的点,用计算的方法求出最佳的 a(斜率) 和 b(截距)。显然,关键是如何求出最佳的 a 和 b。

相信各位高中都已经学过了,下面我们给出计算中线斜率的代码

/************************************线性回归计算中线斜率************************************/
// y = Ax+B
int regression(int startline,int endline)
{
  
  int i=0,SumX=0,SumY=0,SumLines = 0; 
  float SumUp=0,SumDown=0,avrX=0,avrY=0,B,A;
  SumLines=endline-startline;   // startline 为开始行, //endline 结束行 //SumLines
 
  for(i=startline;i<endline;i++)     
  { 
    SumX+=i;       
    SumY+=Middle_black[i];    //这里Middle_black为存放中线的数组
  }         
  avrX=SumX/SumLines;     //X的平均值
  avrY=SumY/SumLines;     //Y的平均值       
  SumUp=0;      
  SumDown=0;  
  for(i=startline;i<endline;i++)   
  {       
    SumUp+=(Middle_black[i]-avrY)*(i-avrX);    
    SumDown+=(i-avrX)*(i-avrX);    
  }    
  if(SumDown==0) 
    B=0;  
  else 
    B=(int)(SumUp/SumDown);       
    A=(SumY-B*SumX)/SumLines;  //截距
    return B;  //返回斜率
}
如果你已经通过几个点得到了一个拟合曲线,你可以使用最小二乘法斜率截距最小二乘法是一种常用的方法,用于在给定的数据点上拟合出一个最接近的曲线。 假设你有一数据点 `(x1, y1), (x2, y2), ..., (xn, yn)`,并且你已经通过这些点得到了一个拟合曲线拟合曲线可以用一个函数来表示,例如 `y = f(x)`。 为了斜率截距,你需要根据最小二乘法的原理,将原始数据点代入拟合曲线中,得到一个误差函数。然后,通过最小化误差函数,可以解出斜率截距的数值。 以下是一个示例,展示如何使用最小二乘法斜率截距: ```matlab % 初始化数据 x = [1, 2, 3, 4, 5]; y = [1.2, 1.9, 3.2, 4.1, 5.0]; % 计算拟合曲线斜率截距 n = length(x); % 数据点的数量 A = [x', ones(n, 1)]; % 构建设计矩阵 coeff = A \ y'; % 使用最小二乘法解系数向量 [斜率; 截距] % 提取斜率截距 slope = coeff(1); intercept = coeff(2); % 输出结果 disp(['斜率: ', num2str(slope)]); disp(['截距: ', num2str(intercept)]); ``` 在示例中,我们首先定义了一数据点 `x` 和 `y`。然后,我们构建了一个设计矩阵 `A`,其中每一行包含一个数据点的 x 值和一个常数项 1。接下来,我们使用 MATLAB 中的左除运算符 `\` 来解系数向量 `coeff`,其中包含了拟合曲线斜率截距。最后,我们从系数向量中提取出斜率截距,并使用 `disp` 函数输出结果。 请注意,这只是一个示例,具体的解方法可能因拟合曲线的形式而异。你需要根据你实际拟合曲线的函数表达式来调整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值