Using a vector as an index to a matrix

2 visualizzazioni (ultimi 30 giorni)
ceinem
ceinem il 1 Dic 2018
Commentato: ceinem il 1 Dic 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 Commento
madhan ravi
madhan ravi il 1 Dic 2018
can you post a short numerical example so that we know what your goal is?

Accedi per commentare.

Risposta accettata

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

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by