我有 2 种替代方法来解决问题,我只是想知道有哪些人比我想象的更了解数学,以及是否有更好的方法来解决这类问题。
问题:我有一个纬度/经度位置列表和一个位置更新之间的时间间隔值,并希望找到 SOG(对地速度)。但是,每个时间间隔的确切值存在一些不确定性——因为数据是通过 Internet 检索的,即使在程序中(例如)设置为每 60 秒请求一次更新。数据来自海洋赛艇模拟器,因此 SOG 也会随着条件的变化以及航向的变化(相对于风)而变化。
一种方法是对与该间隔的时间长度成比例的新更新进行加权,并乘以我们当前的最佳 SOG 估计。像这样的东西(T以秒为单位):
这可以正常工作,尤其是在速度相对一致的情况下。
在看到这个方法之前,我想出的估计 SOG 的方法是:
维护一个最近的个 {timestamp, lat, lon} 元组的列表。
在每次更新时,计算从开始的所有可能子区间的调和平均值:
然后保留个最近估计的列表,并再次取调和平均值。 &不宜过大。显然,如果还没有个元组来对子区间求和,那么只要有很多可用的就使用。由于更新每 60 秒发生一次,因此 10-15 的值似乎适用于和。我能想到的一个可能的改进是对每个子区间进行加权,类似于方法 1。第二种方法似乎比第一种方法更准确,尽管有时可能需要更长的时间才能收敛到合理准确的估计 - 通常需要大约 N 次更新之前它对于任何实际用途都变得准确。
它似乎也能更好地处理“真实” SOG 的变化,即轻微的加速。
鉴于 SOG 很少在超过 15 或 20 分钟内保持一致,即从风强度的增加,或角度变化到船速更高/更低的角度等,并且该方向可以改变(同样,随着速度的变化),从不确定的时间间隔和位置变化计算 SOG 的最佳算法是什么。另外,有没有一种可能的方法来估计估计误差?甚至可能在计算后纠正这个错误项?我应该提到所有可用的数据:航向、纬度和经度,并且我从每个更新请求的开始都保留一个时间戳。
我希望能够尽可能准确地计算出这个速度。
在此先感谢您的帮助,并原谅我对 MathJaX 的不当使用。
编辑:我从 MathJaX 得到数学处理错误,在 math.stackexchange 上运行良好?在这两个问题中注意到很多??所以重新发布纯文本数学。

