STM32
直播中

fanB

9年用户 1537经验值
擅长:20615
私信 关注
[问答]

怎样去实现基于MATLAB的最小二乘直线拟合的代码呢

最小二乘直线拟合的推导过程是怎样的?
怎样去实现基于matlab的最小二乘直线拟合的代码呢?

回帖(1)

陈鹏

2021-11-22 15:07:00
  (1)求解的推导过程:
  假设直线方程为:
  
  设有n对观测值(xi,yi),则列出如下方程:
  
  整理得:
  
  其中A、EA、L的表达式如下:
  
  最后解算参数如下:
  
  其中
  
  (2)基于MATLAB的代码
  clc;
  clear;
  data=load(‘testdata.txt’);
  x=data(:,1);
  y=data(:,2);
  plot(x,y,‘*r’);
  hold on;
  [m,n]=size(data)
  A=[];
  L=[];
  zengguang=[];
  for i=1:m
  A=[A;x(i),1];
  L=[L;y(i)];
  zengguang=[zengguang;x(i),1,y(i)];
  end
  r=eig(zengguang‘*zengguang);%特征值求取
  sigma=min(r);%获取最小的特征值
  I=[1,0;0,1];
  aa=((A’*A-sigma*sigma*I)^-1)*A‘*L;
  a=aa(1);
  b=aa(2);
  xy=-138:-120;
  line1=a*xy+b;
  plot(xy,line1);
  
  蓝色直线为最小二乘拟合得到的直线,红色点为观测值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分