-3

我有一些查询 gpsd 的 python 代码

session=gps.gps(mode &c &c
report=session.next()

正如在 www 上公布的那样。它工作得很好,但以米为单位提供高度,以公里/小时为单位提供速度。在航空业(和自由世界),我想要结和脚。当然我可以转换,但这会增加 CPU 负载并降低准确性。难道没有办法让 gps 库产生“正确”的测量单位吗?

4

1 回答 1

5

在 Python 中转换单位肯定不会减慢你的程序到几乎任何可测量的程度,也不会降低准确性。1 节正好等于 1.852 公里/小时,1 英尺正好等于 0.3048 米,因此我们得到:

knots = speed / 1.852
altft = alt / 0.3048

这些数字尽可能准确。


至于这些会造成多大的错误,这样的除法是安全的操作,假设使用了 32 位 IEEE 浮点数,并且你做了 1 次额外的乘法和 1 次额外的除法。这些中的每一个都将具有 0.5 个二进制精度的最大误差,在 23 位精度中总共有 1 个二进制数字的误差。因此误差的最大值肯定不超过 1 / (2^22) 或 1/4194304。对于 500 节范围内的速度,它会产生每小时 8.7 英寸的差异,对于约 30000 英尺的高度,它会产生 0.86 英寸的差异(哎呀,也许你的 GPS 接收器是倒置的)。如果您认为这些错误很严重,您应该知道任何理智的库和 Python 都已经使用了双精度数,因此错误大约会小 1073741824 倍。

于 2015-02-08T13:50:53.127 回答