两列两个矢量Matlab之间的欧几里德距离

时间:2014-02-25 08:25:05

标签: matlab

我有两个大小为A & B的向量250x4。每个向量中的第一列具有X值,第二列具有Y值。我想计算两个向量中每行X & Y的每个欧氏距离,并将结果保存在一个大小为250x1的新向量C中,该向量C保存欧氏距离的结果。例如,如果A中的第一行是A1x, A1y, A1n, A1mB中的第一行是B1x, B1y, B1n, B1m,那么我希望得到的eucledian距离为[(A1x-) B1x)^ 2 +(A1y-B1y)^ 2] ^ 0.5并且结果将保存在C1中,并且将对250行的其余部分执行相同的操作。所以,如果有人可以请在Matlab中建议如何做到这一点。

2 个答案:

答案 0 :(得分:5)

像这样:

%// First extract on x-y data from A and B
Axy = A(:,1:2);
Bxy = B(:,1:2); 
%// Find all euclidean distances (row-wise)
C1 = sqrt(sum((Axy-Bxy).^2,2));

加上它也处理更高的维度

答案 1 :(得分:1)

使用pdist2

C1=diag(pdist2(A(:,1:2),B(:,1:2)));

实际上,pdist2将为您提供250x250矩阵,因为它会计算所有距离。您只需要主对角线,因此在结果上调用diag(如上面的代码中所示)将产生想要的结果。