Евклидово расстояние между двумя наборами трехмерных точек

Как я могу найти ближайшие точки из двух наборов трехмерных точек (с разным числом, набор 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) поиск?

Другие вопросы по тегам