Matlab 欧几里德距离

Matlab 欧几里德距离,matlab,matrix,euclidean-distance,Matlab,Matrix,Euclidean Distance,我有两点 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矩阵 此外,我还希望结果为方形矩阵

我有两点

 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矩阵


此外,我还希望结果为方形矩阵形式。

是的。这是正确的方法


对于MATLAB使用pdist2(x1,x2,'euclidean')有很多答案。一般来说,是的,你有正确的数学,虽然不是正确的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

由于两个向量之间的欧几里德距离是其差值的两个范数,因此可以使用:

d = norm( x1 - x2, 2 ) 

计算一下。如果缺少第二个参数,则假定为2-范数。

或仅为范数(x1-x2),因为2-范数是默认值。@克里斯:是的,假定为默认值2-范数。但是,如果matrixI发现pdist2而不是pdist2,则2-范数与欧几里德范数大不相同。你对此有什么看法?