我有一个点云,我想要计算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一个问题的后续问题。我在评论中首先提出这个问题,但认为它值得一个新问题,因为它是原始问题的一个相当大的扩展。
答案 0 :(得分:0)
尝试
distances = pdist(squeeze(X(:,:,1:3)));
或squeeze(...)
的转置,如果不正确的话。