如何解决通过一些 3D 点拟合一条线
早上好,
所以我拥有的是一堆 3D 点。 现在我只想通过它拟合一条线而不将一个轴设置为零!
我找不到任何东西,你能帮我吗? (如果有帮助我使用 Matlab)
普通最小二乘拟合是一种选择吗?我刚刚读到它,现在真的不知道如何将它用于一行。
解决方法
假设你的分数是 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 是对称的,所以对角化应该不是问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。