matrix indexing without loop

2 vues (au cours des 30 derniers jours)
mcdull hall
mcdull hall le 2 Août 2018
Commenté : mcdull hall le 2 Août 2018
Hello,
Suppose I have two matrices, A and B:
A = [2 3 1 4;
1 4 1 3];
B = [1 2 3 4;
4 3 2 1];
Now I get the max indices for the matrix A:
[~,ind] = max(A,[],2);
I want to obtain the corresponding values of matrix B with ind:
for ii = 1:2
v(ii) = B(ii,ind(ii));
end
How to get the values of B without a for loop?

Réponse acceptée

Walter Roberson
Walter Roberson le 2 Août 2018
v = B(sub2ind(size(B), 1:size(B,1), ind))
  1 commentaire
mcdull hall
mcdull hall le 2 Août 2018
By the way, it should be:
v = B(sub2ind(size(B), (1:size(B,1))', ind))
Thanks.

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