距离点3D

时间:2013-08-30 16:44:49

标签: matlab distance

我在3D空间中有一个点矢量。

A = rand(80,3)

我想要一个包含点之间所有距离的向量。

D = pdist(A,'euclidean')返回1到3160的向量 你能不能告诉我它是否适合使用? 感谢

1 个答案:

答案 0 :(得分:2)

如果您没有统计工具箱,则使用它不是正确的功能。如果你这样做 - 那么它就是你可以使用的众多功能之一。您还可以执行以下操作:

sz = size(A);
A1 = reshape(A, [1 sz]);
A2 = permute(A1, [2 1 3]);
D = sqrt(sum(bsxfun(@minus, A1, A2).^2,3));

这明确地计算任意两点之间的距离(因此,工作量增加一倍,占用空间的两倍:6400而不是3180个元素)。但是,查找任意两点之间的距离更容易。

然后,您可以将此计算的结果与您从pdist获得的结果进行比较,并说服自己是否相同。注意 - pdist默认返回一个向量,因此您需要查看文档以确保您了解如何解释它。函数squareform可以帮助您:

difference = sum(abs(squareform(D)) - pdist(A, 'euclidean'));

这取决于你想要什么......以及你对“正确功能”的定义是什么......