首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内插4D数据

内插4D数据
EN

Stack Overflow用户
提问于 2014-06-15 21:50:00
回答 1查看 1.3K关注 0票数 1

我有一组GPS站,它的坐标我知道(x,y,z),对于每个站,我也有一个错误(e)。当然,这些站的间距不均匀,否则就太容易了。问题是,为了计算一个站点的错误e,我只使用了所述的站,但我也想考虑其他的。

我的问题是:给定一组不均匀的(x,y,z,e)点,如何在点之间的空间距离函数中插值e?插值不需要精确,因为我正在重新计算我已经有它的点的e。此外,我正在寻找比逆距离或类似的东西更干净的东西。例如,花键会很好。

从我所读到的情况来看,scipy.interpolate包的splev函数似乎起了作用,但我无法理解它是如何工作的,也不明白作为参数应该给它提供什么。

我可以有人解释这是如何工作的,或者向我指出另一种方法,这将是很好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-15 22:25:26

如果我正确理解你的问题,你在空间中有一个点x,y,z,你想通过从已知的站插值来计算误差。您还建议,错误读取的有效性取决于与已知错误点之间的距离。

所以,对于一个点x,y,z,你可以计算出它与每个已知接收站的距离。然后,根据这些距离中的每一个计算出一些权重函数。最后,根据权重函数取加权平均值(或者可能做一些其他的技巧来消除异常值)。

这个怎么样:

代码语言:javascript
复制
# known station coordinates (number of rows matching number of stations)
coords = array([
    (x1, y1, z1),
    (x2, y2, z2),
    ... ])
# respective error values (number of items matching number of stations)
err_values = array([
    e1,
    e2),
    ... ])

# p is a three-element array representing our coordinates
# distances will contain the spatial euclidian distances to the stations 
distances = numpy.linalg.norm(coords - p[None,:], axis=1)

# get the weights somehow
weights = my_weight_function(distances)

# return the weighted average
return numpy.average(err_values, weights=weights)

还有一个技巧可能是有用的,尤其是在这种情况下。最后一项声明可改为:

代码语言:javascript
复制
return numpy.sum(err_values * weights) / (eps + numpy.sum(weights))

基本上是一个加权和,但是一个很小的数字eps加到了分母上。这里的要点是,当我们谈论一个错误时,它应该是离已知点很远的零。否则,我们通常会有一个已知的错误的平均值作为误差在地球的另一边,这是不合理的。唯一合理的假设是误差在很远的地方为零。它不是,但我们不知道更好,因此,零是最好的猜测。

如果我错误地理解了你的问题,请告诉我。(如果您认为插值问题是提高地球表面精度的一种方法,那么地球表面实际上存在一个2d问题,而不是真正的三维问题。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24234414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档