【问题标题】:Fit a line through some 3D points通过一些 3D 点拟合一条线
【发布时间】:2021-07-29 06:09:00
【问题描述】:

早上好,

所以我拥有的是一堆 3D 点。 现在我只想在不将一个轴设置为零的情况下通过它拟合一条线!

我找不到任何东西,你能帮帮我吗? (如果对我使用 Matlab 有帮助)

普通最小二乘拟合是一种选择吗?我刚刚读到它,现在还不清楚如何将它用于一条线。

【问题讨论】:

  • 请阅读如何询问good question 并表现出一些努力(不是说你没有,但在这里看不到)。搜索 SO。也就是说,python solution 是否提供了一些见解?

标签: matlab line curve-fitting least-squares


【解决方案1】:

假设你的分数是 Q1..Qn。我们可以通过线上的一个点 P 和一个指向该线的单位向量 u 来定义一条线。

在任何维度,我们都可以找到如下线。

给定一个点Q,那么直线上离Q最近的点是

Q^ = P + u'*(Q-P)*u

Q到直线的平方距离是Q到Q^的平方距离

dsq = || Q-Q^||^2 = ||(Q-P)||^2 - (u'*(Q-P))^2

找到最佳拟合线的一种方法是寻找使点与线的均方距离最小的线,即最小化

E = Sum{ j | ||(Q[j]-P)||^2 - (u'*(Q[j]-P))^2 }/n

一些相当乏味的代数表明这意味着

P = Sum{ j | Q[j]}/n -- ie the mean of the Qs

u 对应于C的最大特征值的C的特征向量,其中

C = Sum{ j | (Q[j]-P)*(Q[j]-P)'} -- the covariance of the Qs

所以找到 P 和 u 的练习是:

Compute P = Sum{ j | Q[j]}/n

Compute C = Sum{ j | (Q[j]-P)*(Q[j]-P)'}

对角化 C 并选择 u 作为最大特征值对应的特征向量。注意 C 是对称的,所以对角化应该不是问题。

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多