Filter löschen
Filter löschen

Distance between two set of points in space

8 Ansichten (letzte 30 Tage)
andrea
andrea am 26 Jan. 2022
Kommentiert: David Hill am 27 Jan. 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 ?

Antworten (2)

Matt J
Matt J am 26 Jan. 2022
distances = pdist2(A,B);

David Hill
David Hill am 26 Jan. 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 Kommentare
andrea
andrea am 27 Jan. 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 am 27 Jan. 2022
Matt J answer is better.
pdist2(A,B)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Type Identification finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by