如何计算向量之间的欧氏距离?

时间:2015-05-16 14:11:29

标签: matlab

我想计算每对num1,num2和center1之间的欧几里德距离,但会显示错误:“无法从单元格转换为双倍转换”

 [num1]={4,4,4,4,43,4,34,55,6,6,6,65,5,4,4,43,2,2,3,45,6,67,7,7,7,7,4,5,66,5,4,3,3,2,3,4,5};
 [num2]={41,42,43,44,43,4,3,5,62,62,63,65,54,4,4,4,24,24,34,4,6,6,47,47,7,7,4,45,16,51,41,13,3,2,3,4,5};
[center1]={20,30};

2 个答案:

答案 0 :(得分:1)

创建一个这样的数组:

a = [1 2 3 4];

像你一样使用花括号创建一个单元格数组。

要获得距离,您可以使用MATLAB函数pdist

D = pdist(X) 

这计算 m -by- n 数据矩阵 X 中对象对之间的欧几里德距离。

计算两个向量之间的欧几里德距离:

a = [1 2 3 4];
b = [1 2 4 4];

d = pdist([a;b])

有关详细信息,请参阅documentation

答案 1 :(得分:0)

pdist命令需要统计和机器学习工具箱。如果您没有该工具箱,您也可以使用基本操作。两个点向量之间的欧几里德距离就是sqrt(sum((a-b)。^ 2)。所以,你可以这样做:

a = [1 2]; %2D vector, though any dimension is OK
b = [4 7]; %any values, but must be same size as `a`
dist = sqrt(sum((a-b).^2)); %Euclidian distance

不需要工具箱!

如其他答案所述,请勿使用花括号括起您的数字。这是一个需要普通matlab数组的情况,它是上面使用的方括号。