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

조회 수: 2 (최근 30일)
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

채택된 답변

Star Strider
Star Strider 2016년 5월 3일
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

추가 답변 (1개)

dpb
dpb 2016년 5월 3일
>> A(sub2ind(size(A),[1:size(A,1)],ii))
ans =
16 11 9 14
>>

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by