Effacer les filtres
Effacer les filtres

Indexing Array Elements Using Row Number Stored in another Matrix

2 vues (au cours des 30 derniers jours)
Ben
Ben le 26 Août 2020
Commenté : Ben le 27 Août 2020
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

Réponse acceptée

madhan ravi
madhan ravi le 26 Août 2020
Modifié(e) : madhan ravi le 26 Août 2020
Wanted = A(sub2ind(size(A), B, (1:numel(B)).'))
  5 commentaires
Stephen23
Stephen23 le 27 Août 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
Ben
Ben le 27 Août 2020
Thank You,
I understand this now. That works perfectly.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by