nearestNeighbor

Определение самой близкой alphaShape граничной точки

Синтаксис

I = nearestNeighbor(shp,qx,qy)
I = nearestNeighbor(shp,qx,qy,qz)
I = nearestNeighbor(shp,QP)
I = nearestNeighbor(___,RegionID)
[I,D] = nearestNeighbor(___)

Описание

I = nearestNeighbor(shp,qx,qy), поскольку 2D альфа-shp формы, возвращает индексы точек на контуре shp, самого близкого к точкам запроса. I является массивом самых близких соседних индексов, где каждый индекс соответствует индексу строки в shp.Points. qx и координаты запроса qy должны быть одного размера.

I = nearestNeighbor(shp,qx,qy,qz), для 3-D альфа-формы, возвращает индексы граничных точек shp, самого близкого к (qx,qy,qz), и соответствует индексам строки в shp.Points. qx, qy и координаты запроса qz должны быть одного размера.

пример

I = nearestNeighbor(shp,QP) задает точки запроса как матричный QP. Для 2D альфа-формы QP является матрицей с двумя столбцами, представляющими координаты qy и qx. Для 3-D альфа-формы QP имеет три столбца, представляющие qx, qy и координаты qz.

I = nearestNeighbor(___,RegionID) возвращает индекс самой близкой точки, которая находится на контуре области, заданной RegionID, где 1RegionIDnumRegions(shp). Можно включать любой из входных параметров в предыдущих синтаксисах.

[I,D] = nearestNeighbor(___) дополнительно возвращает Евклидово расстояние между точкой запроса и ее самым близким соседом. D имеет тот же размер как I.

Примеры

свернуть все

Создайте набор 2D точек.

th = (pi/12:pi/12:2*pi)';
x1 = [reshape(cos(th)*(1:5), numel(cos(th)*(1:5)),1); 0];
y1 = [reshape(sin(th)*(1:5), numel(sin(th)*(1:5)),1); 0];
x = [x1; x1+15];
y = [y1; y1];

Создайте и постройте альфа-форму с альфа-радиусом, равным 1.

shp = alphaShape(x,y,1);
plot(shp)
hold on

Вычислите самую близкую граничную точку shp к точке запроса QP. Постройте точку запроса синего цвета и самого близкого граничного соседа в красном.

QP = [6 3];
plot(QP(1),QP(2),'b.','MarkerSize',10)
hold on
I = nearestNeighbor(shp, QP);
plot(shp.Points(I,1),shp.Points(I,2),'r.','MarkerSize',10)

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

свернуть все

Альфа-форма, заданная как объект alphaShape. Для получения дополнительной информации смотрите alphaShape.

Пример: shp = alphaShape(x,y) создает 2D объект alphaShape из координат точки (x,y).

X-координаты точки запроса, заданные как числовой массив.

Типы данных: double

Y-координаты точки запроса, заданные как числовой массив.

Типы данных: double

Z-координаты точки запроса, заданные как числовой массив.

Типы данных: double

Координаты точки запроса, заданные как матрица 2D столбца или матрица с тремя столбцами.

  • Для 2D столбцы P представляют qx и координаты qy, соответственно.

  • Для 3-D столбцы P представляют qx, qy и координаты qz, соответственно.

Типы данных: double

Идентификационный номер для области в альфа-форме, заданной как положительный целочисленный скаляр между 1 и numRegions(shp).

Альфа-форма может содержать несколько меньших областей, в зависимости от набора точки и параметров. Каждая из этих меньших областей присвоена уникальный RegionID, который нумерует области от самой большой области или объема к самому маленькому. Например, рассмотрите 3-D альфа-форму с двумя областями. Область с самым большим объемом имеет RegionID 1, и меньшая область имеет RegionID 2.

Пример: shp.RegionThreshold = area(shp,numRegions(shp)-2); подавляет две самых маленьких области в 2D альфа-форме shp.

Типы данных: double

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

свернуть все

Самые близкие соседние индексы, возвращенные как массив с целочисленным знаком. Индексы соответствуют индексу строки shp.Points и указывают на точки на контуре shp, которые являются самыми близкими к данным точкам запроса.

Расстояние от точек запроса до самых близких соседей, возвращенных как числовой массив. D является 2D или 3-D Евклидовым расстоянием и одного размера как I.

Смотрите также

Представленный в R2015a