MATLAB ヘルプ センター
正規分布するスパース ランダム行列
R = sprandn(S)
R = sprandn(m,n,density)
R = sprandn(m,n,density,rc)
R = sprandn(___,typename)
R = sprandn(S) は、行列 S と同じスパース パターンをもちますが、平均 0、分散 1 の正規分布乱数を要素とするスパース行列を作成します。
R
S
0
1
例
R = sprandn(m,n,density) は、区間 [0,1] 内の density にほぼ density*m*n 個の非ゼロ要素をもち、正規分布乱数を要素とするランダムな m 行 n 列のスパース行列を作成します。
m
n
density
density*m*n
R = sprandn(m,n,density,rc) は、条件数の逆数がほぼ rc と等しい行列を作成します。行列 R はランク 1 の行列の和から構成されます。
rc
R = sprandn(___,typename) は、指定されたデータ型のスパース行列を返します。前述の構文にある任意の入力引数の組み合わせに加えて、データ型を指定します。 (R2025a 以降)
typename
すべて折りたたむ
Buckminster Fuller のジオデシック ドームの連結性グラフの 60 行 60 列のスパース隣接行列を作成します。行列 S のスパース パターンをプロットします。
60
S = bucky; spy(S)
行列 S と同じスパース パターンをもちますが、正規分布乱数を要素とする別のスパース行列 R を作成します。R のスパース パターンをプロットします。
R = sprandn(S); spy(R)
密度が 0.1 のランダムな 500 行 1000 列のスパース行列を作成します。行列はおよそ 0.1*500*1000 = 50000 個の非ゼロ要素をもち、正規分布乱数を要素とします。
0.1
500
1000
0.1*500*1000 = 50000
R = sprandn(500,1000,0.1);
行列 R 内の非ゼロ要素の正確な数を表示します。
n = nnz(R)
n = 47663
50 行 100 列のスパース乱数行列を作成します。この行列は、ほぼ 0.2*50*100 = 1000 個の非ゼロ要素をもち、正規分布乱数を要素とします。行列の条件数の逆数を 0.25 に指定します。
50
100
0.2*50*100 = 1000
0.25
R = sprandn(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] 内になければなりません。
条件数の逆数。スカラーまたはベクトルとして指定します。rc は区間 [0,1] になければなりません。
lr <= min(m,n) の場合に、rc が長さ lr のベクトルの場合、R = sprandn(m,n,density,rc) は最初の lr の特異値が rc で他はすべてゼロになります。この場合、R は与えられた特異値をもつ対角行列にランダムな平面回転を適用して作られます。R は、多くの位相的構造や代数的構造をもっています。
lr <= min(m,n)
lr
"double"
"single"
R2025a 以降
出力データ型。"double" または "single" として指定します。
出力行列。正規分布するスパース ランダム行列として返されます。
sprandn は低密度で大きな行列を生成するように設計されていて、m*n が小さい場合または density が大きい場合、要求よりも大幅に少ない数の非ゼロ値を生成します。
sprandn
m*n
sprandn は、関数 rand、randi、および randn と同じ乱数発生器を使用します。この発生器を関数 rng で制御できます。
rand
randi
randn
rng
すべて展開する
sprandn 関数は GPU 配列入力をサポートしますが、次の使用上の注意および制限があります。
この関数を GPU で実行し、gpuArray 出力を取得するには、次のいずれかの構文を使用します。
gpuArray
R = sprandn(S) (ここで、S は gpuArray)
R = sprandn(S,typename) (ここで、S は gpuArray) (R2025a 以降)
R = sprandn(S,typename)
R = gpuArray.sprandn(S) .
R = gpuArray.sprandn(S)
R = gpuArray.sprandn(m,n,density) .
R = gpuArray.sprandn(m,n,density)
R = gpuArray.sprandn(___,typename) (ここで、typename は、前述の 2 つの構文にある入力引数の組み合わせに加えてデータ型を指定) (R2025a 以降)
R = gpuArray.sprandn(___,typename)
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
使用上の注意および制限:
distributed.sprandn (Parallel Computing Toolbox) を参照してください。
distributed.sprandn
typename 引数を "double" または "single" として指定して出力データ型を指定できます。
出力における非ゼロ要素の数が行数より大きい場合に、関数 sprand および sprandn がランダムなスパース行列を生成する際のパフォーマンスが向上しました。
sprand
たとえば、密度 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
sprandsym
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ