【发布时间】:2021-08-30 14:48:08
【问题描述】:
我正在尝试使以下代码运行得更快。 该代码试图通过计算两帧的距离平方和来找到两个对象的最近帧,每帧有 137 个点 (x,y)。 填充距离矩阵后,我正在寻找矩阵中的最小距离并返回此条目的正确性。
enter code here
def getSquraredDistancesSum(frame1, frame2):
sum = 0
distance = 0
for i in range(0, 137):
x1 = frame1[i][0]
y1 = frame1[i][1]
x2 = frame2[i][0]
y2 = frame2[i][1]
sum += math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
return sum
def get_closest_frames(dataobj1, dataobj2, endpoint, startpoint):
nf1 = len(dataobj1.body.data)
nf2 = len(dataobj2.body.data)
window1size= int(0.15*nf1)
window2size = int(0.15*nf2)
distancematrix = np.zeros(shape=(window1size, window2size))
for i in range(endpoint - window1size, endpoint):
for j in range(startpoint, startpoint + window2size):
d = getSquraredDistancesSum(dataobj1.body.data[i][0],
dataobj2.body.data[j][0])
distancematrix[i - (endpoint - window1size)][j - startpoint] = d
min = 1000000
newstartpoint = startpoint
newendpoint = endpoint
for i in range(0, window1size):
for j in range(0, window2size):
if distancematrix[i][j] <= min:
min = distancematrix[i][j]
newstartpoint = j + startpoint
newendpoint = i + (endpoint - window1size)
return newstartpoint, newendpoint
【问题讨论】:
标签: python numpy matrix optimization difference