Santosh Kr
Santosh Kr

Reputation: 17

Octave/MATLAB: Using a matrix to access elements in a matrix without loops

Consider, the two matrices:

>> columns = [1,3,2,4]

and

>> WhichSet = 
       [2, 2, 1, 2;
        1, 1, 2, 1;
        1, 2, 1, 2;
        2, 1, 2, 2]

My intent is to do the following:

>> result = [WhichSet(1,columns(1)), WhichSet(2,columns(2)), WhichSet(3, columns(3)) and WhichSet(4, columns(4))]
result = [2,2,2,2]

without any loops.

Upvotes: 0

Views: 122

Answers (1)

Ander Biguri
Ander Biguri

Reputation: 35525

Because how indexing works, you can not just plug them as they are now, unless you use linear indexing

Your desired linear indices are:

ind=sub2ind(size(WhichSet),1:size(whichSet,1),columns);

Then

out=WhichSet(ind);

Upvotes: 2

Related Questions