Fox*_*Fox 3 matlab matrix euclidean-distance
我有两点
x1 = (a1,b1,c1,d1,e1); //5 dimensional point
x2 = (a2,b2,c2,d2,e2); //5 dimensional point
Run Code Online (Sandbox Code Playgroud)
那么计算欧几里德dist的正确方法是什么?
d = sqrt(sqr(a1-a2)+sqr(b1-b2)+sqr(c1-c2)+sqr(d1-d2)+sqr(e1-e2))
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否pdist(X)会给我相同的结果?
这里X = (x1,x2)ie X是5x2矩阵.
我也希望结果采用方阵形式.
这有很多答案.一般来说,是的,你有正确的数学,虽然不是正确的Matlab语法.
给出一些X描述:
X = [1 3 4 2 1; 8 2 3 5 4]
Run Code Online (Sandbox Code Playgroud)
以下是您写出的等式的语法:
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)
Run Code Online (Sandbox Code Playgroud)
以下是一些更惯用的方法来格式化这个等式:
d2 = sqrt(sum( (X(1,:) - X(2,:)).^2 ))
d3 = sqrt(sum( diff(X,[],1).^2))
Run Code Online (Sandbox Code Playgroud)
这是一种更实用的计算方法
euclidDistance = @(x,y) sqrt(sum( (x-y).^2));
d4 = euclidDistance(X(1,:), X(2,:))
Run Code Online (Sandbox Code Playgroud)
注意,所有这些方法都返回相同的结果: d1=d2=d3=d4 = 8.3066