How to assign values to a sparse matrix without iterations?

9 次查看(过去 30 天)
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

采纳的回答

Adam
Adam 2018-10-9
i = repmat( 1:size( Nonloc ), [1 2] );
j = Nonloc(:)
s = sparse( i, j, 1 );

更多回答(1 个)

dpb
dpb 2018-10-9
S=sparse(Nonloc(:,1),Nonloc(:,2),1);
  6 个评论
Benson Gou
Benson Gou 2018-10-11
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 2018-10-11
Ah! The light finally dawneth...the row isn't given but implied.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by