我想在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维标识平方矩阵。如果每行由两个点
pi
和qi
给出,则可以计算vi = (qi - pi) / sqrt(transposed(qi - pi) * (qi - pi))
关于python - D维空间中距N条线最近的点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56315244/