Distance between ALL(all combinations) points of matrix

8 vues (au cours des 30 derniers jours)
Lidziya Semeniuk
Lidziya Semeniuk le 19 Oct 2019
Réponse apportée : Rik le 19 Oct 2019
How can i have a vector which consists of all the distances betweeen all points of matrix? I have 3D matrix B = 151*3 with points coordinates (X,Y,Z are columns). Possible combination of all this points should be 11325(n = 151,k=2). Snímek obrazovky 2019-10-19 v 14.33.27.png
`I can calculate the distance between 2 3d points like this:
dist = norm(B(1,:,:)-B(2,:,:))
but unfortunately my for loop doesn't work:
n = size(B,1)
for k = 1:n-1
for a = k:n-1;
Z1 = B(k,:,:);
Z2 = B(a+1,:,:);
dist = norm(Z2 - Z1);
end
end
it returns only one number , but i want to have a vector with all distances, so i can make a histogram from it.
Where is the mistake of the for loop? Or can i solve this with repmat function?
Thank you!

Réponse acceptée

Rik
Rik le 19 Oct 2019
Note that you are not calculating only unique combinations. The reason you are only getting a single value is that you are not indexing your output variable.
What you should do is generate the matrix of indices of the combinations and then loop through that matrix. You can use nchoosek to create the matrix.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by