calculate the (geometrical) distance between points of a matrix

5 次查看(过去 30 天)
Lets say I have a large matrix full of zeros, with a few numbers (1,2,3,4,5) located at various positions. Now I want to calculate the distances from point 1 to 2, 1 to 3, 1 to 4 and 1 to 5. Assuming that e.g. the width of the columns in this matrix is 0.4mm and the width of the rows is 0.25mm. Maybe there is already a code/toolbox out there to do such things?

采纳的回答

Andrei Bobrov
Andrei Bobrov 2012-1-27
eg:
data =[0 0 0 0 0 0 0 0 0 0
0 0 0 0 3 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 4 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 5 0 0
0 0 0 0 0 0 0 0 0 0]
[i1,j1,c] = find(data)
ijc = sortrows([i1,j1,c],3)
d = bsxfun(@minus,ijc(2:end,1:2),ijc(1,1:2))
out = hypot(d(:,1)*.25,d(:,2)*.4)
OR
use function dist from Neural Network Toolbox
c = dist(bsxfun(@times,ijc(:,1:2),[.25 .4]).');
out = c(:,1);
  2 个评论
Felix
Felix 2012-1-27
Thanks, this works great for me, even though I don't understand it.
(I assume here the cells are considered to be infinitesimal points connected with lines of defined lengths?)
I have to check out the documentation of this toolbox, one thing I might want to do is calculate the distance of the path from 1 to 2 to 3, 1 to 2 to 3 to 4 and 1 to 2 to 3 to 4 to 5.
Andrei Bobrov
Andrei Bobrov 2012-1-27
out = diag(dist(bsxfun(@times,ij,[.25; .4])),1)
this is 1 to 2 to 3 to 4 to 5.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Statistics and Machine Learning Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by