Main Content

nearestNeighbor

가장 가까운 알파 셰이프 경계점 확인

설명

I = nearestNeighbor(shp,qx,qy)는 2차원 알파 셰이프 shp에 대해 쿼리 점에 가장 가까운, shp의 경계에 있는 점들의 인덱스를 반환합니다. I는 최근접이웃 인덱스로 구성된 배열입니다. 여기서 각 인덱스는 shp.Points의 행 인덱스에 대응합니다. qxqy 쿼리 좌표는 크기가 동일해야 합니다.

I = nearestNeighbor(shp,qx,qy,qz)는 3차원 알파 셰이프에 대해 (qx,qy,qz)에 가장 가까운, shp의 경계점에 대한 인덱스를 반환하며, shp.Points의 행 인덱스에 대응합니다. qx, qy, qz 쿼리 좌표는 크기가 동일해야 합니다.

예제

I = nearestNeighbor(shp,QP)는 쿼리 점을 행렬 QP로 지정합니다. 2차원 알파 셰이프의 경우 QPqx 좌표와 qy 좌표를 나타내는 2개의 열로 구성된 행렬입니다. 3차원 알파 셰이프의 경우 QPqx 좌표, qy 좌표, qz 좌표를 나타내는 3개의 열을 포함합니다.

I = nearestNeighbor(___,RegionID)RegionID로 지정된 영역의 경계에 있는 가장 가까운 점의 인덱스를 반환합니다. 여기서 1RegionIDnumRegions(shp)입니다. 위에 열거된 구문의 입력 인수 중 하나를 포함할 수 있습니다.

[I,D] = nearestNeighbor(___)는 쿼리 점과 최근접이웃 점 사이의 유클리드 거리를 추가로 반환합니다. DI와 크기가 같습니다.

예제

모두 축소

2차원 점 집합을 만듭니다.

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

Figure contains an axes object. The axes object contains an object of type patch.

쿼리 점 QP에 가장 가까운 shp 경계점을 계산합니다. 쿼리 점을 파란색으로 플로팅하고 최근접이웃 경계점을 빨간색으로 플로팅합니다.

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)

Figure contains an axes object. The axes object contains 3 objects of type patch, line. One or more of the lines displays its values using only markers

입력 인수

모두 축소

알파 셰이프로, alphaShape 객체로 지정됩니다. 자세한 내용은 alphaShape를 참조하십시오.

예: shp = alphaShape(x,y)(x,y) 점 좌표에서 2차원 alphaShape 객체를 만듭니다.

쿼리 점 x 좌표로, 숫자형 배열로 지정됩니다.

데이터형: double

쿼리 점 y 좌표로, 숫자형 배열로 지정됩니다.

데이터형: double

쿼리 점 z 좌표로, 숫자형 배열로 지정됩니다.

데이터형: double

쿼리 점 좌표로, 2열 행렬 또는 3열 행렬로 지정됩니다.

  • 2차원의 경우 P의 열은 각각 qx 좌표와 qy 좌표를 나타냅니다.

  • 3차원의 경우 P의 열은 각각 qx 좌표, qy 좌표, qz 좌표를 나타냅니다.

데이터형: double

알파 셰이프에 있는 영역의 ID 번호로, 1numRegions(shp) 사이의 양의 정수 스칼라로 지정됩니다.

알파 셰이프는 점 집합과 파라미터에 따라 여러 개의 작은 영역을 포함할 수 있습니다. 이러한 작은 영역에는 각각 고유한 RegionID가 할당됩니다. 이 ID는 가장 큰 면적이나 부피부터 가장 작은 면적이나 부피의 순으로 영역에 번호가 매겨진 것입니다. 예를 들어, 두 개의 영역을 포함하는 3차원 알파 셰이프를 가정하겠습니다. 둘 중 부피가 더 큰 영역의 RegionID는 1이고, 부피가 더 작은 영역의 RegionID는 2입니다.

예: shp.RegionThreshold = area(shp,numRegions(shp)-2);는 2차원 알파 셰이프 shp에서 가장 작은 두 개의 영역을 표시하지 않습니다.

데이터형: double

출력 인수

모두 축소

최근접이웃 인덱스로, 정수 값 배열로 반환됩니다. 이러한 인덱스는 shp.Points의 행 인덱스에 대응하며, 지정된 쿼리 점에 가장 가까운, shp의 경계에 있는 점을 나타냅니다.

쿼리 점에서 최근접이웃 점까지의 거리로, 숫자형 배열로 반환됩니다. D는 2차원 또는 3차원 유클리드 거리(Euclidean Distance)이며 I와 크기가 같습니다.

확장 기능

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2015a에 개발됨

참고 항목