matrix indexing without loop

8 visualizaciones (últimos 30 días)
mcdull hall
mcdull hall el 2 de Ag. de 2018
Comentada: mcdull hall el 2 de Ag. de 2018
Hello,
Suppose I have two matrices, A and B:
A = [2 3 1 4;
1 4 1 3];
B = [1 2 3 4;
4 3 2 1];
Now I get the max indices for the matrix A:
[~,ind] = max(A,[],2);
I want to obtain the corresponding values of matrix B with ind:
for ii = 1:2
v(ii) = B(ii,ind(ii));
end
How to get the values of B without a for loop?

Respuesta aceptada

Walter Roberson
Walter Roberson el 2 de Ag. de 2018
v = B(sub2ind(size(B), 1:size(B,1), ind))
  1 comentario
mcdull hall
mcdull hall el 2 de Ag. de 2018
By the way, it should be:
v = B(sub2ind(size(B), (1:size(B,1))', ind))
Thanks.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by