D维空间中距N条线最近的点

时间:2019-05-26 16:12:36

标签: python math

我想在D维空间中(例如,用最小二乘)计算到距给定N条线的给定集合(例如,由一个点和该方向的向量所给定)的最小欧氏距离的点/矢量

自从我在项目中使用Python之后,我想知道在numpy之类的标准库中是否已经有适当的实现来解决这个普遍问题,但是我没有找到任何实现。

已经有类似的问题,

Finding the centre of multiple lines using least squares approach in Python

nearest intersection point to many lines in python

但是,这些问题并未考虑大于3的维度,在我的情况下,我想将问题调整为100之类的维度。

我还发现了Matlab的这一资源,该资源似乎并没有得到太多使用,但是它可以解决相同的问题: https://de.mathworks.com/matlabcentral/fileexchange/59805-line-line-intersection-n-lines-d-space?s_tid=FX_rc1_behav

1 个答案:

答案 0 :(得分:0)

如果索引i的每一行均由 unit 矢量列

给出
vi = {
       v1i,
       v2i,
       v3i,
       ...
       vDi
      } 

沿着i线指向,矢量列给定一个点

pi = {
       p1i,
       p2i,
       p3i,
       ...
       pDi
      } 

,其中i = 1 ... N,则您寻求的点x(以列形式给出)由方程式给出

x = inverse( sum(i=1:N, I - vi * transposed(vi)) ) * sum(i=1:N, (I - vi * transposed(vi)) * pi); 

这里I是D维身份平方矩阵。

如果每行由两个点piqi给出,则可以计算

vi = (qi - pi) / sqrt(transposed(qi - pi) * (qi - pi))