我有一个3D空间中的点的向量。距离点3D
A = rand(80,3)
我想要一个包含点之间所有距离的向量。
D = pdist(A,'euclidean')
返回一个向量1-by-3160 可否请您告诉我,如果它是正确的功能使用? 谢谢
我有一个3D空间中的点的向量。距离点3D
A = rand(80,3)
我想要一个包含点之间所有距离的向量。
D = pdist(A,'euclidean')
返回一个向量1-by-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'));
这取决于你想要什么......和你的“右侧功能”是的定义...
你试过了吗? –
只有一种方法可以找到:试一试。 –
是的,但我不知道它是否正确... – gabboshow