问题描述
我有大约9000条弹道,对于一个项目,我必须计算它们之间的距离。轨迹由11个点组成,每个点包含x和y坐标。只需通过以下方式生成样本数据集:
import numpy as np
trajs = np.random.rand(9000,11,2)
我从https://pypi.org/project/similaritymeasures/中获取了Frechet距离函数,该函数以两个轨迹作为输入,而输出是浮点值。
一开始我写了一个嵌套的for循环:
from similaritymeasures import frechet_dist
distance_matrix = []
for i in trajs:
for j in trajs:
distance_matrix.append(frechet_dist(i,j))
获取结果花费的时间太长。
由于距离计算是对称的(即frechet_dist(t1,t2)= frechet_dist(t2,t1)),因此我将计算时间减少了一半以上:
from scipy.spatial.distance import squareform
n = len(trajs)
distance_matrix = []
flag = 0
for i in range(n):
for j in range(flag,n):
if i != j:
distance_matrix.append(frechet_dist(trajs[i],trajs[j]))
flag += 1
dist_mat = squareform(np.asarray(distance_matrix))
现在要处理9000条轨迹,需要19个小时。我得到了结果,但是仍然太久了。有什么方法可以加快计算速度?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)