在Matlab中正确使用pdist

时间:2012-02-28 16:46:04

标签: matlab image-processing geometry point-clouds

我有一个点云,我想要计算Matlab中所有单个点之间的距离(最好没有重复)。

带坐标的矩阵格式为:points [ p x n x d ]。其中p = 1(现在),n与点数一样大,d与维数一样大(在本例中为3)。

这是我的数据:

  • points(:,:,1) = 1 2 3
  • points(:,:,2) = 4 5 6
  • points(:,:,3) = 7 8 9

所以我有三个维度的三点。现在使用pdist,我试图使用distances = pdist(points(:,1:3));distances = pdist(X(:,:,1:3));计算每个点之间的欧几里德距离但是两者都只返回一个空矩阵。

有谁知道如何使用pdist来计算这些距离?它应该返回3个距离,而不是0,但我必须做错事。


顺便说一下。这个问题是this一个问题的后续问题。我在评论中首先提出这个问题,但认为它值得一个新问题,因为它是原始问题的一个相当大的扩展。

1 个答案:

答案 0 :(得分:0)

尝试

distances = pdist(squeeze(X(:,:,1:3)));

squeeze(...)的转置,如果不正确的话。