12

2つのベクトル(単一行の行列)があります。すでに長さがわかっていると仮定し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を使用しておらず、pdist2APIを使用できないことに注意してください。

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 に答える