Правильное использование pdist в Matlab - PullRequest
3 голосов
/ 28 февраля 2012

У меня есть облако точек, для которого я хочу рассчитать расстояние между всеми отдельными точками в 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, но я, должно быть, что-то делаю не так.


Кстати.этот вопрос является продолжением до этого одного.Сначала я спросил об этом в комментариях, но подумал, что это заслуживает нового вопроса, потому что это значительное расширение исходного вопроса.

1 Ответ

0 голосов
/ 28 февраля 2012

Попробуйте

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

или транспонирование squeeze(...), если это не так.

...