MATLAB indexing question

时间:2023-03-09 08:28:00
MATLAB indexing question

Question:

I have a matrix, for example

A = [ 1 2 3; 4 5 6; 7 8 9] ;

and a vector of size 1x3 which specifies which element in each row is the one I'm looking for - i.e. If

vector = [ 1 2 1 ]

then the desired output is

[ 1 5 7 ]

since 1 is
the 1'st element in the 1'st row, 5 is
the 2'nd in the 2'nd row, and 7 is
the 1'st element in the 3'rd row.

How do I achieve this? Couldn't find a built in function to do this, which surprised me.

Answer:

First of all, the indexes in Matlab go from top to bottom.

So in your case A[1] = 1 , A[2] = 4 , A[3] = 7

That said, it would be easier to work on A' , because its a bit more trivial.

B = A';

B((vector + [0:2].* 3))