Is it possible to extract the values with a vector of indices for each row without using the for statement from the matrix?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Danny
el 17 de Jun. de 2020
Comentada: Ameer Hamza
el 17 de Jun. de 2020
Consider the following example.
A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]; % reference matrix
b = [2; 1; 1; 3]; % index for each row that I want to extract
for i=1:size(A,1)
y(i,1) = A(i,b);
end
I am using the above code to extract values that I want.
Is there any simple function to implement the above script fast?
0 comentarios
Respuesta aceptada
Ameer Hamza
el 17 de Jun. de 2020
Editada: Ameer Hamza
el 17 de Jun. de 2020
see sub2ind()
A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]; % reference matrix
b = [2; 1; 1; 3]; % index for each row that I want to extract
idx = sub2ind(size(A), 1:size(A,1), b.');
A(idx)
Result
>> A(idx)
ans =
2 4 7 12
2 comentarios
Más respuestas (1)
KSSV
el 17 de Jun. de 2020
Editada: KSSV
el 17 de Jun. de 2020
May be you are looking for
A(b,:)
The other
A(:,b)
will work, but in your case b has number 4 and in A there are only 3 columns.
To extract a complete row or column, : can be use
A(1,:) % picks the 1st row and all columns
A(:,3) % picks the allrows and third column
A(2,3) % pciks the second row and third column
Ver también
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!