www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/NearestNeighborSearchExample.m
%% Nearest-Neighbor Search % % Copyright 2015 The MathWorks, Inc. %% Section 1 % This example shows how to perform a nearest-neighbor search in 2-D with % |delaunayTriangulation|. %% % Begin by creating a random set of 15 points. X = [3.5 8.2; 6.8 8.3; 1.3 6.5; 3.5 6.3; 5.8 6.2; 8.3 6.5;... 1 4; 2.7 4.3; 5 4.5; 7 3.5; 8.7 4.2; 1.5 2.1; 4.1 1.1; ... 7 1.5; 8.5 2.75]; %% % Plot the points and add annotations to show the ID labels. plot(X(:,1),X(:,2),'ob') hold on vxlabels = arrayfun(@(n) {sprintf('X%d', n)}, (1:15)'); Hpl = text(X(:,1)+0.2, X(:,2)+0.2, vxlabels, 'FontWeight', ... 'bold', 'HorizontalAlignment','center', 'BackgroundColor', ... 'none'); hold off %% % Create a Delaunay triangulation from the points. dt = delaunayTriangulation(X); %% % Create some query points and for each query point find the index of its % corresponding nearest neighbor in |X| using the |nearestNeighbor| method. numq = 10; rng(0,'twister'); q = 2+rand(numq,2)*6; xi = nearestNeighbor(dt, q); %% % Add the query points to the plot and add line segments joining the query % points to their nearest neighbors. xnn = X(xi,:); hold on plot(q(:,1),q(:,2),'or'); plot([xnn(:,1) q(:,1)]',[xnn(:,2) q(:,2)]','-r'); vxlabels = arrayfun(@(n) {sprintf('q%d', n)}, (1:numq)'); Hpl = text(q(:,1)+0.2, q(:,2)+0.2, vxlabels, 'FontWeight', ... 'bold', 'HorizontalAlignment','center', ... 'BackgroundColor','none'); hold off %% % Performing a nearest-neighbor search in 3-D is a direct extension of the % 2-D example based on |delaunayTriangulation|.