Евклидово расстояние между двумя наборами трехмерных точек
Как я могу найти ближайшие точки из двух наборов трехмерных точек (с разным числом, набор 1 включает в себя 400 точек, а набор 2 включает в себя 2000 точек), а затем найти евклидово расстояние между набором 1 и результатом первой части вопроса?
2 ответа
Решение
Ты можешь использовать pdist2
вычислить все расстояния, а затем выбрать минимальное расстояние.
allDist = squareform( pdist2( set1, set2 ) );
[minDist nni] = min( allDist, [], 2 );
Сейчас minDist
содержит минимальное расстояние каждой точки в set1
своему ближайшему соседу (set2(nni)
).
РЕДАКТИРОВАТЬ:
для низкоразмерных точек (3 в этом примере) было бы более эффективно взглянуть на алгоритмы k-NN, как предложено в моем другом ответе.
Рассматривали ли вы использование k-Nearest Neighbors (kNN)
поиск?