How can I find distances between 100 points such that I have a set of distances of each point from rest of the points.

2 views (last 30 days)
Hi Everyone,
I have distributed 100 points randomly in a 100x100x100 m3 3D space. I want to find distance of each point from rest of 99 points such that I have a distance set of 4950 different values. so the distance of 1st node from resy 99 nodes and then distance of 2nd node from rest 98 nodes and so on.
I cannot change the style of the code since I have values saved in these variables.
I have following code:
Close all
Clear all
n=100;
xm=100;
ym=100;
zm=100;
x=0;
y=0;
z=0;
for i=1:1:n
for j=1:1:i
for k=1:1:j
if (i==j && j==k & k==i) % so I dont get 100x100x100 different values and only 100 values with x,y,z coordinates.
S(i).xd=(1,1)*xm; %I cannot change this
XR(i)=S(i).xd;
S(j).yd=rand(1,1)*ym;
YR(j)=S(j).yd;
S(k).zd=rand(1,1)*zm;
ZR(k)=S(k).zd;
Points=[XR;YR;ZR]
end
end
end

Answers (1)

Ameer Hamza
Ameer Hamza on 2 Jan 2021
Just use pdist() function
X = [..]; % create 100x3 matrix
dists = pdist(X)
  3 Comments
Ameer Hamza
Ameer Hamza on 2 Jan 2021
Yes, It seems that from your code. There are easier ways to create the matrix [XR;YR;ZR] than using a triple for-loop, but it depends on how your data is stored in the struct. If you can share a sample struct in a .mat file, then I can suggest an easier solution. But if your for-loop works for you, then that is fine too.
Tamoor Shafique
Tamoor Shafique on 3 Jan 2021
Please see attached. I am not good with Matlab if there are esier ways I don't mind adapting as long as it gives me distribution of nodes in full 100x100x100 network and then splits it into 27 sub cubes so i can get local info about each subnode like data in 27 sets.

Sign in to comment.

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!