查看: 66|回复: 0|关注: 0

[未答复] 如何剔除离异点并用最小二乘法准确的拟合直线

[复制链接]

新手

10 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
发表于 6 天前 | 显示全部楼层 |阅读模式
本帖最后由 vipfeiye 于 2018-9-14 19:48 编辑

现已知一系列的坐标点,如何剔除‘干扰点’拟合出一条直线,并使这一系列点尽可能多的处在拟合出的直线上。
现有两种情况:
1、我已知了该直线的斜率,通过最小二乘法,利用定斜率拟合出的直线并没有通过这一系列点,直线的截距不对。
2、如果不利用该已知的斜率,通过最小二乘法对这一系列的点进行直线拟合,则拟合出的直线斜率不对。
如何做才能准确的拟合出这条直线呢?最终效果图需要向最后一张图那样。

这是我拟合直线用的最小二乘法的代码
%数据.txt中的第一列为X,第二列为Y
x2=sum(X.^2);       % 求Σ(xi^2)
x1=sum(X);          % 求Σ(xi)
x1y1=sum(X.*Y);     % 求Σ(xi*yi)
y1=sum(Y);          % 求Σ(yi)

a = -0.1184;%确定的斜率
% a=(n*x1y1-x1*y1)/(n*x2-x1*x1);      %解出直线斜率b=(y1-a*x1)/n
b=(y1-a*x1)/n;                      %解出直线截距

figure(3)
plot(X,Y,'r+');      
hold on

px=linspace(0,4096,4096);
py=a*px+b;
plot(px,py,'b');


离散的数据点

离散的数据点

按一定斜率拟合的直线

按一定斜率拟合的直线

不按一定斜率拟合的直线

不按一定斜率拟合的直线

最终效果图

最终效果图

数据.txt

1.84 KB, 下载次数: 0

数据,第一列为X,第二列为Y

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表