Using a vector as an index to a matrix

1 visualización (últimos 30 días)
ceinem
ceinem el 1 de Dic. de 2018
Comentada: ceinem el 1 de Dic. de 2018
Hi,
I have a rather large Matrix A with the dimensions 100x100x3 as well as a vector b of dimensions 100x1 with values from 1 to 3.
Now I want to get a out of Matrix A a Matrix C with the dimensions 100x100x1 where b defines which elements along the third dimension of A should be used.
I was thinking of something along the lines of
C = A(:,:,b(:))
but this does not work the way I want.
This code does exactly what I want, but I would prefer to do it without a For-Loop:
for i = 1:100
C(i,:) = A(i,:,b(i));
end
Is it even possible to do without a for-Loop? I had a look at the sub2ind function, but could not get it to work in the way I wanted.
Thank you very much for any help.
  1 comentario
madhan ravi
madhan ravi el 1 de Dic. de 2018
can you post a short numerical example so that we know what your goal is?

Iniciar sesión para comentar.

Respuesta aceptada

Bruno Luong
Bruno Luong el 1 de Dic. de 2018
Editada: Bruno Luong el 1 de Dic. de 2018
[m,n,p] = size(A);
[I,J] = ndgrid(1:m,1:n);
C = A(sub2ind([m,n,p],I,J,b(I)))

Más respuestas (0)

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by