Using a vector as an index to a matrix
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
ceinem
am 1 Dez. 2018
Kommentiert: ceinem
am 1 Dez. 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 Kommentar
madhan ravi
am 1 Dez. 2018
can you post a short numerical example so that we know what your goal is?
Akzeptierte Antwort
Bruno Luong
am 1 Dez. 2018
Bearbeitet: Bruno Luong
am 1 Dez. 2018
[m,n,p] = size(A);
[I,J] = ndgrid(1:m,1:n);
C = A(sub2ind([m,n,p],I,J,b(I)))
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing 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!