我想在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

最佳答案

如果每个索引为i的行均由单位矢量列给出

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))

关于python - D维空间中距N条线最近的点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56315244/

10-13 23:06