How to assign values to a sparse matrix without iterations?

1 vue (au cours des 30 derniers jours)
Benson Gou
Benson Gou le 9 Oct 2018
Commenté : dpb le 11 Oct 2018
Hi, All,
I want to assign non-zero values to a matrix H. I know the locations of all the non-zeros. For example, I know the non-zero locations:
It indicates H(1,1)=1;H(1,2)=1;H(2,1)=1;H(2,5)=1;H(3,2)=1;H(3,3)=1;...
Would you please tell me how I can quickly assign this values without iterations?
Thanks a lot. Bei

Réponse acceptée

Adam
Adam le 9 Oct 2018
i = repmat( 1:size( Nonloc ), [1 2] );
j = Nonloc(:)
s = sparse( i, j, 1 );
  1 commentaire
Benson Gou
Benson Gou le 10 Oct 2018
Dear Adam,
Thanks a lot for your excellent code. It works very well.
Best regards, Bei

Connectez-vous pour commenter.

Plus de réponses (1)

dpb
dpb le 9 Oct 2018
S=sparse(Nonloc(:,1),Nonloc(:,2),1);
  6 commentaires
Benson Gou
Benson Gou le 11 Oct 2018
Hi, dab and Bruno,
Thanks for your comments. I think dab's code gives one "1" in each row while Adam gives two "1" in each row which is expected.
Thanks a lot again. Bei
dpb
dpb le 11 Oct 2018
Ah! The light finally dawneth...the row isn't given but implied.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by