我有一个点云,我想为此计算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的跟进。我最初在评论中提出了问题,但认为它值得一个新问题,因为它是对原始问题的相当大的扩展。

最佳答案

尝试

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


squeeze(...)的转置不正确。

10-02 12:03