MATLAB: Calculate the (geometrical) distance between points of a matrix

distancegeometrymatrix position

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?

Best Answer

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);