Distance between two set of points in space

4 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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by