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