我有一个点云,我想为此计算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(...)
的转置不正确。