2012-11-13 25 views
11

私は2つのベクトル(単一行行列)を持っています。長さlenをすでに知っているとします。2つのベクトル間のユークリッド距離(単列行列)

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を利用できないことに注意してください。

答えて

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

又は

distance = norm(A - B); 
0
[val idx] = sort(sum(abs(Ti-Qi)./(1+Ti+Qi))); 

又は

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

ヴァル値IDXは、ユークリッド距離を適用した後にソートされた列の元のインデックス値です。 (MATLABコード)

0

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

または

distance = norm(A-B); 
、答えを@kolに追加します
関連する問題