Finding closest distance between two data set for each point
16 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mehmet Volkan Ozdogan
el 28 de Mzo. de 2019
Editada: Walter Roberson
el 29 de Mzo. de 2019
Hi,
I have two data set. Each of them have 300, 3D (x,y,z) data .
Assume;
first data set =m
second data set=n
Every point in "m" corresponds to 1 point in "n" which have to be the closest one.
I need to find the closest "n" to "m" and calculate the distance between them and i need to do it for all 300 data
I am new with matlab. I think i should use pdist2 but i could not find how.
Thank you...
0 comentarios
Respuesta aceptada
Walter Roberson
el 29 de Mzo. de 2019
d = pdist2(first_xyz, second_xyz);
[mindist, idx] = min(d, [], 2);
Here first_xyz and second_xyz should be something-by-3 arrays of x, y, z coordinates.
The idx that results will have as many rows as first_xyz has, and the value will be the index of which second_xyz row is closest to that point; the mindist value will tell you how close it is (no more computation will be required.)
If you want the index for each n (second dataset) as to which m it is closest to, then use min(d, [], 1)
0 comentarios
Más respuestas (1)
Mehmet Volkan Ozdogan
el 29 de Mzo. de 2019
2 comentarios
Walter Roberson
el 29 de Mzo. de 2019
Editada: Walter Roberson
el 29 de Mzo. de 2019
Assuming that C1 and C2 have 3 columns, giving X Y Z coordinates
d = pdist2(C1, C2);
[mindist, idx] = min(d, [], 2);
for K = 1 : length(idx)
fprintf('C1(%d,:)@(%f,%f,%f) <-> C2(%d,:)@(%f,%f,%f) is distance %f\n', K, C1(K,:), idx(K), C2(idx(K),:), mindist(K));
end
Ver también
Categorías
Más información sobre Get Started with Statistics and Machine Learning Toolbox en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!