3

私は2つのポイントがあります

 x1 = (a1,b1,c1,d1,e1);    //5 dimensional point
 x2 = (a2,b2,c2,d2,e2);    //5 dimensional point

それで、ユークリッド距離を計算するこの正しい方法はありますか?

  d = sqrt(sqr(a1-a2)+sqr(b1-b2)+sqr(c1-c2)+sqr(d1-d2)+sqr(e1-e2))

今、私はpdist(X)私に同じ結果を与えるかどうか疑問に思っていましたか?

ここで、X = (x1,x2)すなわちX、5x2マトリックスです。

また、結果を正方行列形式で表示したいと思います。

4

3 に答える 3

6

これにはたくさんの答えがあります。一般的に、はい、あなたは正しい数学を持っていますが、正しいMatlab構文ではありません。

あなたが説明するようにいくつかのXが与えられます:

X = [1 3 4 2 1; 8 2 3 5 4]

書き出した方程式の構文は次のとおりです。

d1 = sqrt((X(1,1)-X(2,1))^2+(X(1,2)-X(2,2))^2+(X(1,3)-X(2,3))^2+(X(1,4)-X(2,4))^2+(X(1,5)-X(2,5))^2)

この方程式をフォーマットするためのより慣用的な方法をいくつか示します。

d2 = sqrt(sum(  (X(1,:) - X(2,:)).^2  ))
d3 = sqrt(sum(       diff(X,[],1).^2))

これを計算するためのより機能的な方法は次のとおりです

euclidDistance = @(x,y)  sqrt(sum( (x-y).^2));
d4 = euclidDistance(X(1,:), X(2,:))

これらのメソッドはすべて同じ結果を返すことに注意してください。d1=d2=d3=d4 = 8.3066

于 2013-03-14T05:56:45.953 に答える
3

はい。それは正しい方法です。

MATLABで使用する場合pdist2(x1,x2,'euclidean')

于 2013-03-14T05:55:25.693 に答える
3

2つのベクトル間のユークリッド距離は、それらの差の2ノルムであるため、次を使用できます。

d = norm( x1 - x2, 2 ) 

それを計算します。2番目の引数が欠落している場合、2ノルムが想定されます。

于 2013-11-27T07:43:06.647 に答える