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

5 ビュー (過去 30 日間)
Tamoor Shafique 2021 年 1 月 2 日
コメント済み: Tamoor Shafique 2021 年 1 月 3 日
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

サインインしてコメントする。

回答 (1 件)

Ameer Hamza 2021 年 1 月 2 日
Just use pdist() function
X = [..]; % create 100x3 matrix
dists = pdist(X)
3 件のコメント1 件の古いコメントを表示1 件の古いコメントを非表示
Ameer Hamza 2021 年 1 月 2 日
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 2021 年 1 月 3 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeWSNs についてさらに検索

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by