Matrix manipulation

1 vue (au cours des 30 derniers jours)
Pedro Cavaco
Pedro Cavaco le 12 Avr 2011
Hi,
I have a matrix A(1000,6) and i want to write 1's at certain positions say:
i = [785 58 595 389 450 956];
j = [4 6 2 3 5 1];
If I do A(i,j) = 1 it places 1's in the positions "i" of all the columns "j".
But what i want is:
A(i(1),j(1)) = 1
A(i(2),j(2)) = 1
...
A(i(end),j(end)) = 1
Does anybody knows how to do this without having to use a for loop?
  1 commentaire
Teja Muppirala
Teja Muppirala le 12 Avr 2011
Is there a compelling reason not to use a FOR loop? A loop will probably do this faster than any non-loop solution (that I can think of anyways).

Connectez-vous pour commenter.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 12 Avr 2011
variant
i = [785 58 595 389 450 956];
j = [4 6 2 3 5 1];
A(sub2ind(size(A), i, j)=1;

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