Finding closest distance between two data set for each point
16 ビュー (過去 30 日間)
古いコメントを表示
Mehmet Volkan Ozdogan
2019 年 3 月 28 日
編集済み: Walter Roberson
2019 年 3 月 29 日
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 件のコメント
採用された回答
Walter Roberson
2019 年 3 月 29 日
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 件のコメント
その他の回答 (1 件)
Mehmet Volkan Ozdogan
2019 年 3 月 29 日
2 件のコメント
Walter Roberson
2019 年 3 月 29 日
編集済み: Walter Roberson
2019 年 3 月 29 日
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
参考
カテゴリ
Help Center および File Exchange で Get Started with Statistics and Machine Learning Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!