我有一组定义为2D数组的曲线(点数,坐标数).我正在使用Hausdorff距离计算它们的距离矩阵.我目前的代码如下.不幸的是,它太慢,有500-600条曲线,每条曲线有50-100个3D点.那有更快的方法吗?
def distanceBetweenCurves(C1, C2):
D = scipy.spatial.distance.cdist(C1, C2, 'euclidean')
#none symmetric Hausdorff distances
H1 = np.max(np.min(D, axis=1))
H2 = np.max(np.min(D, axis=0))
return (H1 + H2) / 2.
def distanceMatrixOfCurves(Curves):
numC = len(Curves)
D = np.zeros((numC, numC))
for i in range(0, numC-1):
for j in range(i+1, numC):
D[i, j] = D[j, i] = distanceBetweenCurves(Curves[i], Curves[j])
return D
Run Code Online (Sandbox Code Playgroud)