Find closest coordinates to a point from a list of coordinates where the list also contains that point
조회 수: 3 (최근 30일)
이전 댓글 표시
I need to find closest point to A=[X2,Y2] among ListofNodes=[X1,Y1; X2,Y2; X3,Y3; ...], and I need to draw a line joining A and the closest point. I am using the following code:
A = [X2,Y2];
%compute Euclidean distances:
distances = sqrt(sum(bsxfun(@minus, ListofNodes , A).^2,2));
%find the smallest distance and use that as an index into ListofNodes:
closest = ListofNodes(distances==min(distances),:);
%draw a line joining the point and the closest coordinates
h = line(A,closest);
set(h, 'LineWidth', 0.01, 'Color','blue');
The problem is that ListofNodes also contains A. So, I am getting closest = A. How to solve this problem?
댓글 수: 3
KSSV
2018년 7월 31일
If you don't want to use in built finction...get the distance of the point from each point, sort the distances and pick the least distant point. :) . knnsearch also does the same.
답변 (1개)
KSSV
2018년 7월 31일
편집: KSSV
2018년 7월 31일
Have a look on knnsearch. It will give you what you want.
A = rand(10,2) ;
idx = knnsearch(A,A(2,:),'k',2) ; % get two close points
idx(1) = [] ; % remove the pomnt itself
plot(A(:,1),A(:,2),'.r') ;
hold on
plot(A(2,1),A(2,2),'Ob') ;
plot([A(2,1), A(idx,1)],[A(2,2), A(idx,2)])
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Coordinate Transformations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!