dsearchn

Поиск по ближайшей точке

Описание

пример

k = dsearchn(P,PQ) возвращает индексы ближайших точек в P к точкам запроса в PQ измеряется в евклидовом расстоянии.

k = dsearchn(P,T,PQ) возвращает индексы ближайших точек в P при помощи триангуляции Делоне T, где T = delaunayn(P). Предоставление T может улучшить эффективность поиска при PQ содержит большое число точек.

k = dsearchn(P,T,PQ,outind) возвращает индексы ближайших точек в P, но присваивает значение индекса outind для точек запроса, которые находятся вне выпуклой оболочки P. Для примера, desearchn(P,T,PQ,Inf) возвращает значение индекса Inf для точек запроса за пределами выпуклой оболочки.

пример

[k,dist] = dsearchn(___) также возвращает расстояние от каждой точки в P к соответствующей точке запроса в PQ.

Примеры

свернуть все

Создайте матрицу P из 2D данных точек и матрицы PQ из 2-D точек запроса. Найдите ближайшую точку данных к каждой точке запроса и вычислите соответствующие расстояния.

rng default;
P = rand([10 2]);
PQ = [0.5 0.5; 0.1 0.7; 0.8 0.7];
[k,dist] = dsearchn(P,PQ);

Постройте графики точек данных и точек запроса и выделите точку данных, ближайшую к каждой точке запроса.

plot(P(:,1),P(:,2),'ko')
hold on
plot(PQ(:,1),PQ(:,2),'*g')
hold on
plot(P(k,1),P(k,2),'*r')
legend('Data Points','Query Points','Nearest Points','Location','sw')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Data Points, Query Points, Nearest Points.

Отобразите расстояния.

dist
dist = 3×1

    0.2349
    0.2586
    0.1825

Входные параметры

свернуть все

Точки, заданные как m -by - n матрица, содержащая m точки < reservedrangesplaceholder1 > размерности. Для примера, P = [0 0 0; 1 1 1] представляет координаты 3-D для точек (0,0,0) и (1,1,1).

Точки запроса, заданные как матрица r -by n, содержащая r точки < reservedrangesplaceholder1 > размерности. Для примера матрица 2 на 3 PQ = [-1 -1 -1; 2 2 2] представляет координаты 3-D для двух точек запроса (-1, -1, -1) и (2,2,2).

Количество столбцов в PQ должен совпадать с количеством столбцов в P.

Триангуляция Делоне, заданная как матрица, возвращаемая delaunayn функция.

Значение внешнего индекса, заданное как скалярное значение индекса для точек запроса за пределами выпуклой оболочки.

Если outval задается как [], затем выход k эквивалентно синтаксису k = dsearchn(P,T,PQ).

Выходные аргументы

свернуть все

Индексы, возвращенные как вектор-столбец, содержащая индексы точек данных, ближайших к точкам запроса. Длина k равно количеству точек запроса.

Расстояние, возвращенное как вектор-столбец, содержащее евклидовы расстояния между каждой точкой запроса и ближайшей точкой входа. Длина dist равно количеству точек запроса.

Алгоритмы

dsearchn основан на Qhull [1]. Для получения информации о Qhull смотрите http://www.qhull.org/. Информацию об авторских правах см. в разделе http://www.qhull.org/COPYING.txt.

Ссылки

[1] Цирюльник, К.Б., Д. П. Добкин и Х.Т. Хухданпаа. Алгоритм Quickhull для выпуклых оболочек. Транзакции ACM на математическом программном обеспечении, том 22, № 4, декабрь 1996, p 469-483.

Представлено до R2006a