ヘルプ センターヘルプ センター
一様分布するスパース ランダム行列
R = sprand(S)
R = sprand(m,n,density)
R = sprand(m,n,density,rc)
例
R = sprand(S) は、行列 S と同じスパース パターンをもちますが、一様分布乱数を要素とするスパース行列を作成します。
R
S
R = sprand(m,n,density) は、区間 [0,1] 内の density にほぼ density*m*n 個の非ゼロ要素をもち、一様分布乱数を要素とするランダムな m 行 n 列のスパース行列を作成します。
m
n
density
density*m*n
R = sprand(m,n,density,rc) は、条件数の逆数がほぼ rc と等しい行列を作成します。行列 R はランク 1 の行列の和から構成されます。
rc
すべて折りたたむ
Buckminster Fuller のジオデシック ドームの連結性グラフの 60 行 60 列のスパース隣接行列を作成します。行列 S のスパース パターンをプロットします。
60
S = bucky; spy(S)
行列 S と同じスパース構造をもちますが、一様分布乱数を要素とする別のスパース行列 R を作成します。R のスパース パターンをプロットします。
R = sprand(S); spy(R)
密度が 0.1 のランダムな 500 行 1000 列のスパース行列を作成します。行列はおよそ 0.1*500*1000 = 50000 個の非ゼロ要素をもち、一様分布乱数を要素とします。
0.1
500
1000
0.1*500*1000 = 50000
R = sprand(500,1000,0.1);
行列 R 内の非ゼロ要素の正確な数を表示します。
n = nnz(R)
n = 47663
ほぼ 0.2*50*100 = 1000 個の非ゼロ要素をもち、一様分布乱数を要素とするランダムな 50 行 100 列のスパース行列を作成します。行列の条件数の逆数を 0.25 に指定します。
0.2*50*100 = 1000
50
100
0.25
R = sprand(50,100,0.2,0.25);
行列 R の条件数が 1/0.25 = 4 と等しいことを示します。
1/0.25 = 4
cond(full(R))
ans = 4.0000
入力行列。非スパース行列またはスパース行列として指定します。
データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical 複素数のサポート: あり
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 は、多くの位相的構造や代数的構造をもっています。
lr <= min(m,n)
lr
sprand は低密度で大きな行列を生成するように設計されていて、m*n が小さい場合または density が大きい場合、要求よりも大幅に少ない数の非ゼロ値を生成します。
sprand
m*n
sprand は、関数 rand、randi、および randn と同じ乱数発生器を使用します。この発生器を関数 rng で制御できます。
rand
randi
randn
rng
使用上の注意事項および制限事項:
rc 引数はサポートされていません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
distributed.sprand (Parallel Computing Toolbox) を参照してください。
distributed.sprand
すべて展開する
出力における非ゼロ要素の数が行数より大きい場合に、関数 sprand および sprandn がランダムなスパース行列を生成する際のパフォーマンスが向上しました。
sprandn
たとえば、密度 10% の非ゼロ要素をもつ 10,000 行 10,000 列の行列の生成は、以前のリリースより約 2.5 倍速くなっています。
function timingSprand n = 1e4; d = 0.1; rng default tic sprand(n,n,d); toc end
おおよその実行時間は以下のとおりです。
R2021b: 2.7 秒
R2022a: 1.1 秒
このコードの時間測定では、Windows® 10、Intel® Xeon® CPU W-2133 (3.60 GHz) 搭載のテスト システムで、関数 timingSprand を呼び出しました。
timingSprand
sprandn | sprandsym
sprandsym
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office