Borrar filtros
Borrar filtros

Indexing Array Elements Using Row Number Stored in another Matrix

2 visualizaciones (últimos 30 días)
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

Respuesta aceptada

madhan ravi
madhan ravi el 26 de Ag. de 2020
Editada: madhan ravi el 26 de Ag. de 2020
Wanted = A(sub2ind(size(A), B, (1:numel(B)).'))
  5 comentarios
Stephen23
Stephen23 el 27 de Ag. de 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 el 27 de Ag. de 2020
Thank You,
I understand this now. That works perfectly.

Iniciar sesión para comentar.

Más respuestas (0)

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