计算点对列表之间的距离的最快方法



我在k维空间中有n个点(数据点的n乘k矩阵)。此外,我有一个长度为d的点对列表(列表矩阵的维数为d乘以2)。

我的目标是在长度为d的向量中找到该列表中每对点之间的欧几里得距离。

在MATLAB中,对于一长串列表,最快的方法是什么?你认为使用C++/python可能会有很多加速吗?

A = [22 44];
B= [44 66];
tic
distAB = sqrt((A(1)-B(1))^2+(A(2)-B(2))^2)
toc
distAB =
   31.1127
Elapsed time is 0.004398 seconds.

嗯,MATLAB非常快。只需做一个for循环,并随着时间的推移更新你的积分。

你的代码应该是这样的:

for i=1:length(d)-1
distAB(i)=sqrt((d(1,i+1)-d(1,i))^2+(d(2,i+1)-d(2,i))^2)
end

最新更新