Indexing a matrix with another matrix?

2 vues (au cours des 30 derniers jours)
Petter Stefansson
Petter Stefansson le 23 Sep 2016
Hi.
I have a 10000x4 matrix, Idx, where each row contains 4 indices to a logical matrix, A. I would like to set all indices in Idx to true (1) in A. This seems like something that should be possible to do very easy in one single line but I can’t quite figure it out so I’m currently doing it by looping:
A = false(10000,256);
for i = 1 : size(A,1)
A(i,Idx(i,:)) = true;
end
which is very slow. Could someone tell me how to do this indexing without a loop?
Thanks

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 23 Sep 2016
Modifié(e) : Andrei Bobrov le 23 Sep 2016
[m,n] = size(Idx);
[ii,~] = ndgrid(1:m,1:n); % or ii = repmat((1:m)',1,n);
% ii = (1:m)'*ones(1,n);
A(sub2ind(size(A),ii,Idx)) = true;
  1 commentaire
Petter Stefansson
Petter Stefansson le 23 Sep 2016
Thank you that was significantly faster

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

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

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by