12

我有两个向量(单行矩阵)。假设我们已经知道长度len

A = [ x1 x2 x3 x4 x5 .... ]
B = [ y1 y2 y3 y4 y5 .... ]

要计算它们之间的欧几里得距离,最快的方法是什么。我的第一次尝试是:

diff = A - B
sum = 0
for column = 1:len
    sum += diff(1, column)^2
distance = sqrt(sum)

我已经循环使用了这种方法数百万次。所以,我正在寻找快速且正确的东西。请注意,我没有使用 MATLAB,也没有可用的 pdist2 API。

4

3 回答 3

34
diff = A - B;
distance = sqrt(diff * diff');

或者

distance = norm(A - B);
于 2012-11-13T20:57:09.863 回答
0
[val idx]    =  sort(sum(abs(Ti-Qi)./(1+Ti+Qi)));   

或者

[val idx]    =  sort(sqrt(sum((Ti-Qi).^2))); 

Val 是值,idx 是应用欧几里得距离后被排序的列的原始索引值。(MATLAB代码)

于 2013-01-28T11:30:10.337 回答
0

要添加到@kol 答案,

diff = A - B;
distance = sqrt(sum(diff * diff')) % sum of squared diff

或者

distance = norm(A-B);
于 2016-10-29T18:59:06.360 回答