Is it possible to extract the values with a vector of indices for each row without using the for statement from the matrix?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Ameer Hamza
il 17 Giu 2020
Modificato: Ameer Hamza
il 17 Giu 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 Commenti
Più risposte (1)
KSSV
il 17 Giu 2020
Modificato: KSSV
il 17 Giu 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
Vedere anche
Categorie
Scopri di più su Matrices and Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!