Distance between two set of points in space

9 visualizzazioni (ultimi 30 giorni)
andrea
andrea il 26 Gen 2022
Commentato: David Hill il 27 Gen 2022
Hello,
So I have a set of points in a matrix A 10x3 ( i.e 10 points with x,y,z coordinates) and another set of points in a matrix B 10x3. I want to find the distance between each point of A with each point of B whitout using a for loop.
Normally I would fix a point in A and compute all the distances with the points in B and then choose another point in A and do the same and so on. Is there a way to do it directly from the matrix A and B whitout a loop ?

Risposte (2)

Matt J
Matt J il 26 Gen 2022
distances = pdist2(A,B);

David Hill
David Hill il 26 Gen 2022
Why no loop? Below is oneliner but has an internal loop.
C=arrayfun(@(x)vecnorm((A(x,:)-B)'),1:size(A,1),'UniformOutput',false);
  2 Commenti
andrea
andrea il 27 Gen 2022
Yes thank you for the answer, that's nice. I thought that there could have been a better way without using for loop (some kind of vectorization) because in the case I have lots of points a for loop starts to be very slow.
David Hill
David Hill il 27 Gen 2022
Matt J answer is better.
pdist2(A,B)

Accedi per commentare.

Categorie

Scopri di più su Data Type Identification in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by