python 最小二乘法三维坐标拟合平面_最小二乘法三维(k维)直线拟合

本文介绍了如何使用最小二乘法在三维空间中拟合直线。通过点向量方程(l=A+dD),计算直线参数A和D,确保点到直线距离的平方和最小。首先求解直线经过所有点的中心点A,然后利用矩阵运算找到最小特征值对应的特征向量D,从而得到直线方程。这种方法适用于二维、三维乃至更高维度的直线拟合问题,具有广泛的应用前景。
摘要由CSDN通过智能技术生成

上篇文章已经实现了二维直线\(Ax+By+C=0\)的拟合算法。如果要拟合三维直线怎么办?首先,方程\(Ax+By+Cz+D=0\)是不可以的,因为他是三维空间中的一个平面。如果要表达一条直线,需要两个三维平面的联立,似乎也不是个好办法。这里我们可以采用直线的“点+向量”方程\(l = A + dD\)的方式。其中A为直线上一点,D为直线方向向量。在计算几何中,这是一种常用的表达方式。

已知,采样点$$\{(x_1,y_1),(x_2,y_2),…,(x_n,y_n)\}$$欲求直线\(l = A + dD\),使得各点到直线的距离的平方和最小。

采样点\(X_i(x_i,y_i)\)到直线\(l\)的距离可以用\(X_i\)到\(A\)的向量 \(Y_i = X_i -A\) 与\(Y_i\)在直线上的投影\((Y_i^TD)D\)做差求得。因此可以列目标方程为

$$f = \sum (Yi^2 – (D\cdot Y_i)^2)$$

解题的技巧在与对上式的重组。先求 A。\( \frac {\partial f}{\partial A} = \frac {\partial f}{\partial Y} \cdot \frac {\partial Y}{\partial A} = – \frac {\partial f}{\partial Y} =0 \)

$$f = \sum (Y_i^2 – (D^TY_i)^2) $$

$$\frac {\partial f}{\partial Y} = \sum(2Y_i – 2DD^TY_i ) =2 (I-DD^T) \sum Y_i =0$$

可以得出 \(\sum Y_i =\sum (X_i-A)=0\),解出 \(

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值