我在3D空间中有一个点矢量。
A = rand(80,3)
我想要一个包含点之间所有距离的向量。
D = pdist(A,'euclidean')
返回1到3160的向量
你能不能告诉我它是否适合使用?
感谢
答案 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'));
这取决于你想要什么......以及你对“正确功能”的定义是什么......