2013-08-30 112 views
-5

我有一个3D空间中的点的向量。距离点3D

A = rand(80,3) 

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

D = pdist(A,'euclidean')返回一个向量1-by-3160 可否请您告诉我,如果它是正确的功能使用? 谢谢

+0

你试过了吗? –

+0

只有一种方法可以找到:试一试。 –

+0

是的,但我不知道它是否正确... – gabboshow

回答

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

这取决于你想要什么......和你的“右侧功能”​​是的定义...

+0

非常感谢!那是我正在寻找的答案! – gabboshow

+0

如果这是您正在寻找的答案,请将其标记为“已接受”。 – Floris