我想在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
答案 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维身份平方矩阵。
如果每行由两个点pi
和qi
给出,则可以计算
vi = (qi - pi) / sqrt(transposed(qi - pi) * (qi - pi))