Nearest neighbour for one dataset
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello,
I have one dataset consiting of 3d points. I want to find out within that dataset, which point is closest to which in 3d? Eg; [1 2 3; 3 4 5;6 7 8;8 9 10]... And what are some neat tricks to visualize such results?
Thanks!
0 comentarios
Respuestas (1)
Walter Roberson
el 1 de Sept. de 2017
To visualize, you could construct a directed graph using digraph() and plot it with coordinates https://www.mathworks.com/help/matlab/ref/graph.plot.html#buzeikk
2 comentarios
Walter Roberson
el 1 de Sept. de 2017
%calculate distances of each point to each other point
dists = squareform( pdist(X) );
%set diagonal to inf so point is not its own closest neighbor
dist(1:size(dists,1)+1:end) = inf;
%find index of closest point
[~, minidx] = min(dists, [], 2);
Now for the K'th point, X(K,:), minidx(K) is the row index of its closest neighbour.
For large number of points, the above might not be as efficient as what knnsearch does, but for modest number of points it is probably more efficient.
Ver también
Categorías
Más información sobre Statistics and Machine Learning Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!