Matlab - 两个矩阵之间的欧几里德距离

时间:2014-04-23 16:29:30

标签: matlab matrix euclidean-distance

我已声明了2个这样的矩阵:

a = [ 1 2;
      11 12];


[m, n] = size(a);

b = a(2,:); 

dist( b , a ); % the first column is not interesting

这很有效,我得到了一个载体

[ 10.0499 9.0000 ]

但是,如果我想在我的矩阵a:

中添加一列或一行
 a = [ 1  2  3 ;
       11 12 13];

然后应用相同的算法,而不是上面,忽略或不是第一列,我得到这个错误:

Error using -
Matrix dimensions must agree

我不知道为什么它不起作用,有人可以向我解释一下吗?

实际上我甚至不知道如何检索这个欧几里德距离的计算方式,我试图手动检索这些值[10.0499 9.0000]失败了。 Matlab数学工作手册说他使用的算法如下:

d = sum((x-y).^2).^0.5

任何帮助

2 个答案:

答案 0 :(得分:1)

它不起作用,因为使用两个参数调用时dist函数的工作方式如下:

  

Z = dist(W,P)采用SxR权重矩阵和RxQ输入矩阵和
  返回W&#39行和P&#39列之间距离的SxQ矩阵。   dist(P',P)返回与dist(P)相同的结果。

也就是说,如果你这样做:

a = [ 1  2  3 ;
      11 12 13]
b = a(2,:) % Then b = [11 12 13]

...并致电:

dist(b, a)

它将尝试计算 b&#39行之间的距离(在这种情况下,只有一个有三个数字的行,即一个3D点)和 a&#39 ; s列(每列有两个数字,即2D点)。测量它们之间的距离是没有意义的。

它对你的第一个例子起作用的原因是因为矩阵是正方形(2x2)。因此,您需要计算行(2D)与其他列(也称为2D)之间的距离。

答案 1 :(得分:0)

根据定义,距离是单个数字,而不是矢量。您获得相同大小的矩阵的向量这一事实已经表明出现了问题。特别是,它给出了每个相应列向量之间的距离。因此,当您的矩阵大小不同时,它不起作用。矩阵之间的距离没有以任何特定方式定义。我不知道两个矩阵之间欧几里德距离的概念。