Matlab 三维距离点

Matlab 三维距离点,matlab,distance,Matlab,Distance,我有一个三维空间中的点向量 A = rand(80,3) 我想要一个包含所有点之间距离的向量 D=pdistA,'euclidean'返回一个1乘3160的向量 你能告诉我这个功能是否正确吗? 谢谢如果您没有统计工具箱,它不是正确的函数。如果你这样做了,那么它就是你可以使用的众多功能之一。您还可以执行以下操作: sz = size(A); A1 = reshape(A, [1 sz]); A2 = permute(A1, [2 1 3]); D = sqrt(sum(bsxfun(@minus

我有一个三维空间中的点向量

A = rand(80,3)
我想要一个包含所有点之间距离的向量

D=pdistA,'euclidean'返回一个1乘3160的向量 你能告诉我这个功能是否正确吗?
谢谢

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

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'));

这取决于你想要什么。。。你对正确函数的定义是什么…

只有一种方法可以找到答案:试试看。是的,但我不知道它是否正确…编辑问题,回答是否有效。然后我们会让你知道它是否有效。你怎么不知道它是否正确?用更少的点来尝试这个功能,这样你就可以用手检查正在发生的事情了。非常感谢!这就是我一直在寻找的答案!如果这是您正在寻找的答案,请将其标记为已接受。