Finding closest distance between two data set for each point
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Mehmet Volkan Ozdogan
am 28 Mär. 2019
Bearbeitet: Walter Roberson
am 29 Mär. 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 Kommentare
Akzeptierte Antwort
Walter Roberson
am 29 Mär. 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 Kommentare
Weitere Antworten (1)
Mehmet Volkan Ozdogan
am 29 Mär. 2019
2 Kommentare
Walter Roberson
am 29 Mär. 2019
Bearbeitet: Walter Roberson
am 29 Mär. 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
Siehe auch
Kategorien
Mehr zu Get Started with Statistics and Machine Learning Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!