sprand
一様分布するスパース ランダム行列
説明
例
スパース パターンが同じスパース行列の作成
Buckminster Fuller のジオデシック ドームの連結性グラフの 60
行 60
列のスパース隣接行列を作成します。行列 S
のスパース パターンをプロットします。
S = bucky; spy(S)
行列 S
と同じスパース構造をもちますが、一様分布乱数を要素とする別のスパース行列 R
を作成します。R
のスパース パターンをプロットします。
R = sprand(S); spy(R)
密度の指定
密度が 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
に指定します。
R = sprand(50,100,0.2,0.25);
行列 R
の条件数が 1/0.25 = 4
と等しいことを示します。
cond(full(R))
ans = 4.0000
入力引数
S
— 入力行列
非スパース行列 | スパース行列
入力行列。非スパース行列またはスパース行列として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
複素数のサポート: あり
m
— 行列の行数
非負の整数
行列の行数。非負の整数として指定します。
n
— 行列の列数
非負の整数
行列の列数。非負の整数として指定します。
density
— 非ゼロ要素の密度
スカラー
非ゼロ要素の密度。スカラーとして指定します。density
は区間 [0,1] 内になければなりません。
データ型: double
rc
— 条件数の逆数
スカラー | ベクトル
条件数の逆数。スカラーまたはベクトルとして指定します。rc
は区間 [0,1] になければなりません。
lr <= min(m,n)
の場合に、rc
が長さ lr
のベクトルの場合、R = sprand(m,n,density,rc)
は最初の lr
の特異値が rc
で他はすべてゼロになります。この場合、R
は与えられた特異値をもつ対角行列にランダムな平面回転を適用して作られます。R は、多くの位相的構造や代数的構造をもっています。
データ型: double
制限
sprand
は低密度で大きな行列を生成するように設計されていて、m*n
が小さい場合またはdensity
が大きい場合、要求よりも大幅に少ない数の非ゼロ値を生成します。
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
rc
引数はサポートされていません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
distributed.sprand
(Parallel Computing Toolbox) を参照してください。
バージョン履歴
R2006a より前に導入R2022a: ランダムなスパース行列を生成する際のパフォーマンスが向上
出力における非ゼロ要素の数が行数より大きい場合に、関数 sprand
および 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
を呼び出しました。
MATLAB コマンド
次の 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:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)