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

标签 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

最佳答案

如果索引为 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(转置(qi - pi) * (qi - pi))

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

相关文章:

Python:通过 UDP 发送大对象

algorithm - 什么是总和?

c# - 加法的十进制顺序影响结果

javascript - 如何求单位圆上两个 Angular 之间的顺时针 Angular

c++ - 如何解决负数情况下程序以相同方式工作的问题?

python - 检查字符串是否包含列表中的任何元素

python - 如何在不删除 Python 中的其余部分的情况下将信息添加到 Excel 工作表?

math - 为什么反向传播神经网络中必须使用非线性激活函数?

Python - 如何删除复杂文件夹中的内容而不改变其结构?

python - Tensorflow vs Numpy concat 操作