フィルターのクリア

Sparse Arrays - Specific Function?

1 回表示 (過去 30 日間)
Maroulator
Maroulator 2014 年 11 月 30 日
編集済み: Mohammad Abouali 2014 年 11 月 30 日
I need to initialize a 100X100 sparse array with random values and a density of 5%; I then need to set all diagonal elements of that sparse array to 1. I can get the first piece of my problem using the sprand(100,100,0.05) command, but I have no idea how to do the second piece without using speye(100) which will overwrite the random values of my initial matrix.
Other than using a for loop, does anyone know of a function that will just set all diagonal elements of my 100X100 matrix to 1 without losing the random values ascribed to some of the off-diagonal elements?
Thanks in advance.

採用された回答

Mohammad Abouali
Mohammad Abouali 2014 年 11 月 30 日
編集済み: Mohammad Abouali 2014 年 11 月 30 日
s=sprand(100,100,0.05);
s(sub2ind(size(s),1:100,1:100))=1.0;
or
s=sprand(100,100,0.05);
s(1:101:(100*100))=1.0;

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSparse Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by