ndgrid
을 사용하여 후보 세트를 만들 수 있습니다. 2-D 예제에서 간격이 1 인 격자 점을 원합니다.
xrange = -10:10;
yrange = -10:10;
[X, Y] = ndgrid(xrange, yrange);
이렇게하면 점의 2 차원 행렬이 두 개 생성됩니다.
candidate_set = [X(:), Y(:)];
을 그리고 당신은 당신의 선택 지점의 반경 내에있는 다음의 어느 찾을 rangesearch
를 호출 할 수 있습니다 : rangesearch
예상하는 형식으로 그것을 얻을이 셀 어레이 (반환
test_pt = [3, 1];
radius = 5;
idx = rangesearch(candidate_set, test_pt, radius);
각 테스트 포인트에 대해 하나의 요소). 귀하의 경우에는, 당신은 단지 하나의 테스트 포인트를, 그래서 우리는 idx{1}
에만 관심이있어 :
neighborhood = candidate_set(idx{1}, :);
하나 더 참고 : 우리는 후보 세트를 생성에 대해 좀 더 영리한 수 있습니다. 우리는 이웃이 테스트 포인트 중심으로 하이퍼 큐브에 의해 제한된다는 것을 알고, 그래서 우리는 후보 세트로 하이퍼 큐브에서 포인트를 사용하여 시작할 수 :
range_min = test_pt - radius;
range_max = test_pt + radius;
을 그리고 우리는에서 후보 세트를 구성 할 수 있습니다 이 범위 : 치수의 임의의 수에
xrange = ceil(range_min(1)):floor(range_max(1));
yrange = ceil(range_min(2)):floor(range_max(2));
[X, Y] = ndgrid(xrange, yrange);
candidate_set = [X(:), Y(:)];
:
nDims = length(test_pt);
grid_vecs = cell(nDims, 1);
grid_mats = cell(nDims, 1);
for ii = 1:nDims
grid_vecs{ii} = ceil(range_min(ii)):floor(range_max(ii));
end
[grid_mats{:}] = ndgrid(grid_vecs{:});
for ii = 1:nDims
grid_mats{ii} = grid_mats{ii}(:);
end
candidate_set = horzcat(grid_mats{:});
이웃의 점을 중심으로 반경 r의 볼이다. 'rangesearch'는이 볼 안에있는 주어진 점의 부분 집합을 반환합니다. 그래서 후보자가 없다면 "그 모든 동네"를 얻는 것이 무엇을 의미합니까? – KQS
@ user1877862이 볼 안에있는 점의 하위 집합을 만들고 싶습니다. 예를 들어, 점 (3,1)과 반지름 r이 5이므로 모든 점을 r (5) 내의 점 (3,1)으로 찾고 싶습니다. 증분은이 경우 1이 될 수 있습니다. 즉, 가능한 답은 point (4,1), (3,2), (5,1)이 될 수 있습니다. – user1964417