How do I index into a matrix with a vector to extract the jth column for each row?

2 visualizaciones (últimos 30 días)
Is there an easy way to index into a matrix with a vector to extract the jth column of the matrix for each row? As an example, lets take the 4 x 4 matrix created by
A = magic(4);
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
I have a vector which describes which columns I'd like to extract:
ii = [1; 2; 1; 2]
ii =
1
2
1
2
Is there a straightforward way of indexing into the matrix to return the vector:
result =
16
11
9
14

Respuesta aceptada

Star Strider
Star Strider el 3 de Mayo de 2016
There is. Use the sub2ind function:
A = magic(4);
ii = [1; 2; 1; 2];
ix = sub2ind(size(A), [1:4]', ii);
result = A(ix)
result =
16
11
9
14

Más respuestas (1)

dpb
dpb el 3 de Mayo de 2016
>> A(sub2ind(size(A),[1:size(A,1)],ii))
ans =
16 11 9 14
>>

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