matlab最小二乘法拟合直线

最小二乘法直线拟合原理--最小二乘算法原理、来源及其Matlab实现(直线拟合) - 知乎

对于下列表格用最小二乘法拟合直线

matlab最小二乘法拟合直线_第1张图片

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')

图像如下:

matlab最小二乘法拟合直线_第2张图片

也可直接用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')
图形为:

matlab最小二乘法拟合直线_第3张图片

你可能感兴趣的:(matlab,最小二乘法,算法)