2013-03-14 100 views
3

我有两点欧氏距离

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

因此是计算欧几里德DIST这个正确的方式?

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

现在我想知道pdist(X)会给我同样的结果吗?

这里X = (x1,x2)X是5x2矩阵。

另外我想在矩阵矩阵形式的结果。

回答

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

3

是的。这是正确的方式。

对于MATLAB使用pdist2(x1,x2,'euclidean')

+0

我发现pdist不是pdist2。你对此有何看法? – Christina 2013-12-18 15:55:49

+0

http://www.mathworks.co.uk/help/stats/pdist2.html – 2013-12-18 20:07:12

3

由于两个向量之间的欧几里得距离是它们的区别的两个标准,你可以使用:

d = norm(x1 - x2, 2) 

到计算它。如果第二个参数缺失,则假定2范数。

+0

或只是标准(x1-x2),因为2-范数是默认值。 – Chris 2013-11-27 08:59:42

+0

@Chris是,假设默认的2范数。 – Dzanvu 2013-11-27 09:30:45

+0

但是2范数与矩阵情况下的欧几里得相当不同 – Christina 2013-12-18 15:35:31