我有一个x,y元组的(长)列表,它共同描述了一条路径。尽管速度非恒定,但老鼠的活动速度却是恒定的。
我的目标是以恒定的速度激活这条道路。所以我有曲线段和直线段,任意两个点之间的δ-d不一定是相同的。
给定的数据如下:
[(0,0), (0,2), (4,6).... ],在这个列表的长度是~1k-2k点的情况下,除了蛮力计数每个点之间的线段长度,然后指定每一个n长度为“帧”之外,还有其他方法吗?
发布于 2016-05-16 04:58:10
如果使用Numpy数组来表示数据,则可以将计算矢量化。这是你能得到的最有效的方法。
发布于 2016-05-16 03:41:58
我相信在熊猫身上有一种优雅的方法,但在那之前,如果你能忍受一些错误,这里有一个简单的想法。你可以用几种不同的方式来做这件事,但下面是它的要点:
将每个元组视为链接列表中的节点。定义每个点之间所需的长度( D )。当您在列表中移动时,如果下一个节点不是当前节点的距离D,则相应地调整其x、y坐标(或根据需要插入/删除节点),以便它是连接节点的线段与当前节点的距离D。
就像我说的,你将不得不忍受一些错误,因为你的原始点将被调整/删除。如果在此之前生成点以创建更多的分辨率,则可能会减少错误。
发布于 2016-05-16 04:04:28
如果要使用这样的近似,即表示在tuple1和下一个元组之间的点之间的路径,tuple2是一条直线,那么:
abs(complex(tuple2[0]-tuple1[0], tuple2[1]-tuple1[1]))给出在这两个点之间遍历的长度,它的和将是总长度。这除以总时间,将给予长度,以一个时间单位的遍历。所以仍然是蛮力,但也许是一种更有效的方法,尤其是在列表理解和和函数一起使用时。正如马克·s所指出的,如果你能提高采样分辨率,那么近似度就会提高。
https://stackoverflow.com/questions/37245832
复制相似问题