Main Content

sprand

一様分布するスパース ランダム行列

説明

R = sprand(S) は、行列 S と同じスパース パターンをもちますが、一様分布乱数を要素とするスパース行列を作成します。

R = sprand(m,n,density) は、区間 [0,1] 内の density にほぼ density*m*n 個の非ゼロ要素をもち、一様分布乱数を要素とするランダムな mn 列のスパース行列を作成します。

R = sprand(m,n,density,rc) は、条件数の逆数がほぼ rc と等しい行列を作成します。行列 R はランク 1 の行列の和から構成されます。

すべて折りたたむ

Buckminster Fuller のジオデシック ドームの連結性グラフの 6060 列のスパース隣接行列を作成します。行列 S のスパース パターンをプロットします。

S = bucky;
spy(S)

Figure contains an axes object. The axes object with xlabel nz = 180 contains a line object which displays its values using only markers.

行列 S と同じスパース構造をもちますが、一様分布乱数を要素とする別のスパース行列 R を作成します。R のスパース パターンをプロットします。

R = sprand(S);
spy(R)

Figure contains an axes object. The axes object with xlabel nz = 180 contains a line object which displays its values using only markers.

密度が 0.1 のランダムな 5001000 列のスパース行列を作成します。行列はおよそ 0.1*500*1000 = 50000 個の非ゼロ要素をもち、一様分布乱数を要素とします。

R = sprand(500,1000,0.1);

行列 R 内の非ゼロ要素の正確な数を表示します。

n = nnz(R)
n = 47663

ほぼ 0.2*50*100 = 1000 個の非ゼロ要素をもち、一様分布乱数を要素とするランダムな 50100 列のスパース行列を作成します。行列の条件数の逆数を 0.25 に指定します。

R = sprand(50,100,0.2,0.25);

行列 R の条件数が 1/0.25 = 4 と等しいことを示します。

cond(full(R))
ans = 4.0000

入力引数

すべて折りたたむ

入力行列。非スパース行列またはスパース行列として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
複素数のサポート: あり

行列の行数。非負の整数として指定します。

行列の列数。非負の整数として指定します。

非ゼロ要素の密度。スカラーとして指定します。density は区間 [0,1] 内になければなりません。

データ型: double

条件数の逆数。スカラーまたはベクトルとして指定します。rc は区間 [0,1] になければなりません。

lr <= min(m,n) の場合に、rc が長さ lr のベクトルの場合、R = sprand(m,n,density,rc) は最初の lr の特異値が rc で他はすべてゼロになります。この場合、R は与えられた特異値をもつ対角行列にランダムな平面回転を適用して作られます。R は、多くの位相的構造や代数的構造をもっています。

データ型: double

制限

  • sprand は低密度で大きな行列を生成するように設計されていて、m*n が小さい場合または density が大きい場合、要求よりも大幅に少ない数の非ゼロ値を生成します。

ヒント

  • sprand は、関数 randrandi、および randn と同じ乱数発生器を使用します。この発生器を関数 rng で制御できます。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する