Indexing Array Elements Using Row Number Stored in another Matrix
2 views (last 30 days)
Show older comments
This seems like it should be a fairly simple common thing to do and Yet I cannot find any similar questions or information anywhere on the forums. Basically, all I want to do is index values in a matrix using the numbers stored in another Matix. For example if I have a Matrix A
A = [5 14 24 5; 16 12 22 15; 8 55 44 21; 3 2 34 65]
and a Matix B
B = [1; 2; 4; 3]
The numbers contained in B correspond to row numbers that need to be accessed in A. In otherwords I would like to access the values in the following locations of matrix A (1,1), (2,2), (4,3), (3,4). I would then like to store these values in a new Matrix. So in this instance, the output contained in that new Matrix would be 5 12 34 21
I tried the following:
A = [5 14 24 5; 16 12 22 15; 8 55 44 21; 3 2 34 65];
B = [1; 2; 4; 3];
for i = 1:4
z = B(1,i)
Y(i) = A(z,i)
end
0 Comments
Accepted Answer
madhan ravi
on 26 Aug 2020
Edited: madhan ravi
on 26 Aug 2020
Wanted = A(sub2ind(size(A), B, (1:numel(B)).'))
5 Comments
Stephen23
on 27 Aug 2020
>> A = [5,14,24,5;16,12,22,15;8,55,44,21;3,2,34,65];
>> B = [1;2;4;3]; % row subscript indices
>> C = 1:numel(B); % column subscript indices
>> X = sub2ind(size(A),B(:),C(:)); % linear indices
>> Y = A(X)
Y =
5
12
34
21
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!