Difference between the individual rows of B and all the rows of A.

1 visualización (últimos 30 días)
Hi everyone.
I have 2 arrays, A (378812x3 double) and B (400x3 double).
I have to calculate the difference between the individual rows of B and all the rows of A.
I tried to use the following formula but it does not run.
How can i do it? Thanks
N=400
for k=1:N
DIF=sqrt((A(:,1)-B(1:N,1)).^2+(TA(:,2)-B(1:N,2)).^2+(A(:,3)-B(1:N,3)).^2);
end

Respuesta aceptada

Bruno Luong
Bruno Luong el 30 de Nov. de 2018
DIF = zeros(size(A,1),size(B,1))
for k=1:size(B,1)
DIF(:,k)=sqrt((A(:,1)-B(k,1)).^2+(A(:,2)-B(k,2)).^2+(A(:,3)-B(k,3)).^2);
end
Or simply (if you have the right toolbox)
DIF = pdist2(A,B)
  1 comentario
Guillaume
Guillaume el 30 de Nov. de 2018
Editada: Guillaume el 30 de Nov. de 2018
You don't even need the toolbox, it's trivial to implement:
DIF = sqrt(sum((permute(A, [1 3 2]) - permute(B, [3 1 2])).^2, 3))
note that permute is an expensive operation so the loop may be faster.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by