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を使用しておらず、pdist2 APIも利用できないことに注意してください。
diff = A - B;
distance = sqrt(diff * diff');
または
distance = norm(A - B);
@kolの回答に追加するには、
diff = A - B;
distance = sqrt(sum(diff * diff')) % sum of squared diff
または
distance = norm(A-B);
[val idx] = sort(sum(abs(Ti-Qi)./(1+Ti+Qi)));
または
[val idx] = sort(sqrt(sum((Ti-Qi).^2)));
Valは値で、idxはユークリッド距離を適用した後にソートされる列の元のインデックス値です。 (Matlabコード)