我想(在坐标地图上)画出一艘船经过的路线。我有角度和速度的时间序列数据。。。像这样的
1s,10英里/小时,4度
2秒,14英里/小时,-3度
3s,9英里/小时,2度
有没有一个python库可以帮助我在XY坐标网格上绘制它
这个问题很相似。。。一个好的开始。 update coordinates based on angle and speed
最终,我想要一个像这样的图书馆 [x,y]=函数(速度、角度、prevX、prevY)
然后我要画出所有的x,y点。图书馆就这样存在吗
到目前为止我有这个
import numpy as np
import math
def calc_xy(angle, speed):
# Starting variables
curx = 0
cury = 0
curang = math.radians(0)
x = np.empty(len(angle))
y = np.empty(len(angle))
for z in range(len(angle)):
x[z], y[z], curang = calc_xy_interior(angle[z], speed[z], curx, cury, curang)
curx = x[z]
cury = y[z]
return x, y
def calc_xy_interior(angle, speed, curx, cury, curang):
# Calculate distance travelled in meters
angle_radians = math.radians(angle) + curang
xtravel = 0.277778 * speed * math.cos(angle_radians)
ytravel = 0.277778 * speed * math.sin(angle_radians)
x = curx + xtravel
y = cury + ytravel
return x, y, angle_radians
好的,在Python中有一条规则:尽可能避免
for
循环。他们真的很慢numpy
通过它的通用函数和广播功能,您可以对整个阵列进行操作,从而使这一点变得非常简单。如果您的阵列占用的内存很小,这通常是一个很好的选择然后您必须担心数组的内存布局
numpy
默认情况下使用行主布局。因为在你的问题中,我们可以大量地处理x和y维,因此数组的一个好的形状是(2, N)
,其中N
是点数那么,我对你的问题的处理方法如下:
我意识到如果你对
numpy
不熟悉的话,这可能会有点过分,问问你是否需要澄清顺便说一句,如果你不知道的话,这是一个非常粗糙的整合轨迹的方法。如果你没有足够频繁地(及时地)采样你的速度和/或长时间这样做,你会预测你的船离实际位置很远
相关问题 更多 >
编程相关推荐