最小二乘法直线拟合原理--最小二乘算法原理、来源及其Matlab实现(直线拟合) - 知乎
对于下列表格用最小二乘法拟合直线
matlab代码如下:
clear all
% 生成离散点
t = [19.1 25.0 30.1 36.0 40.0 45.1 50.0];
r = [76.3 77.8 79.75 80.80 83.35 83.90 85.10];
% 构造参数矩阵
A = ones(7,2);
A(:,2) = t';
% 参数初值
a = 0; %平均速度
b = 0; %初始位置
% 误差值
l = r - (b + a*t);
% 解算参数
for i = 1:7
dX = inv(A'*A)*A'*l';
b = b + dX(1);
a = a + dX(2);
l = r - (b + a*t);
end
% 成图,红色‘+’为生成的离散点,黑色直线为最小二乘拟合直线
plot(t,r,'r+',t,b+a*t,'k')
xlabel('温度T')
ylabel('阻值R')
title('Rt=R0+R0αT')
图像如下:
也可直接用polyfit来实现:
t = [19.1,25.0,30.1,36.0,40.0,45.1,50.0];
r = [76.3,77.8,79.75,80.80,83.35,83.90,85.10];
scatter(t,r); %scatter画出离散点
p=polyfit(t,r,1); %拟合曲线,其中p为权重系数
y1=polyval(p,t); %权重系数代入,拟合出新的y1
hold on%绘制y1
plot(t,y1)
xlabel('温度T')
ylabel('阻值R')
title('Rt=R0+R0αT')
图形为: