【问题标题】:Finding a point that best fits the intersection of n spheres找到一个最适合 n 个球体交集的点
【发布时间】:2012-09-22 07:03:30
【问题描述】:

我有一个带有距离的点数组。我希望找到一个最能满足条件的点

for (point_i, distance_i) in pointArray:
  abs(point - point_i) = distance_i

我认为这可以通过某种回归或最小二乘来解决,但我在问题表述上遇到了麻烦。

如果有人能帮忙,将不胜感激

【问题讨论】:

  • 这是在一维空间中吗?或者这个绝对值实际上是某个高维空间中的欧几里得距离?
  • 这是在具有欧几里得距离的 3D 空间中。很抱歉没有说得更清楚

标签: math geometry regression


【解决方案1】:

您需要定义“最佳”才能获得可回答的问题。

您可能想要做的是定义某种误差函数来确定偏离给定点的程度,然后尝试最小化误差的总和。要使用的错误函数取决于您的实际问题。例如,也许您想使用 (length(point - point_i) - distance)2。那将是最小二乘。但也许你不太关心距离偏离的绝对数量,只关心它们有多远和你期望它们有多远之间的比率。所以你可以使用 (length(point - point_i)/distance - 1)2。也许您可以从一堆传感器中获得点和距离。在这种情况下,要使用的适当误差函数反映了距离测量中存在多少不确定性。

一旦您选择了合适的误差函数,您就需要找到优化它的方法。最简单的方法是计算误差函数的梯度,并使用它跟随寻路算法到达最低点。如果你的错误函数表现良好,这应该可以工作,虽然不是那么快。如果您有野心,您可以使用多元 Newton-Raphson 方法来找到这一点。这会对您的误差函数做出更多假设,并且会做很多工作,但会收敛快得多

【讨论】:

  • 感谢您的回答。我在这里想要做的实际上是从一堆范围数据中重建传感器位置。我有一组有点嘈杂的 3D 点,以及一组距相机的距离,我想找到相机应该在哪里
  • @Xzhsh:那么您的误差函数应该反映您对范围测量的不确定性。如果是相机,那么我猜 (length(point - point_i)/distance - 1)^2 可能是合理的。
【解决方案2】:

这个问题通常用线性代数来解决,通过求解“最小二乘”,最小化误差的平方。

这就是 gps 接收器如何找到“最合适”的坐标来提供您的坐标。他们获取所有不同卫星的“嘈杂”距离集,并找到与“嘈杂”距离的平方误差最小的单个点相交的一组新距离。

那里有许多线性代数库(最主要的是 linpack),它们应该具有解决这些类型问题的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    相关资源
    最近更新 更多