| MATLAB Function Reference |
sparse
表示
S = sparse(A) S = sparse(i,j,s,m,n,nzmax) S = sparse(i,j,s,m,n) S = sparse(i,j,s) S = sparse(m,n)
詳細
関数 sparse は、行列を MATLAB
のスパースストレージ構造で作成します。
S = sparse(A)
は、ゼロ要素を取り除いてフル行列をスパース型の行列に変換します。S
が、既にスパースの場合、sparse(S) は、S を出力します。
S = sparse(i,j,s,m,n,nzmax)
は、ベクトル i, j, s を使い、nzmax 個の非ゼロ要素に対して割り当てられるスペースをもつ
m行n列のスパース行列を作成します。s のゼロ要素は、i
と j の対応する値と共に無視されます。ベクトルi,
j, s は、同じ長さです。重複する i と j
の値をもつ S の任意の要素が付け加えられます。
この 6 個の引数コールを簡略化するために、i,
j, s が同じ長さである場合、引数 s と引数
i、または、j のいずれかに対して、スカラを使うことができます。
S = sparse(i,j,s,m,n) は、 nzmax
= length(s) を使います。
S = sparse(i,j,s) は、m
= max(i) と n = max(j)を使います。s
のゼロを削除する前に最大値が計算されるので、[i j
s] の行の 1 つは、 [m n 0] になる場合があります。
S = sparse(m,n) は、sparse([],[],[],m,n,0)
の省略形です。これは、m 行 n
列のすべての要素がゼロのスパース行列を作成します。
注意
すべての MATLAB 組み込みの代数、論理、インデックス演算は、スパース行列、または、スパース行列とフル行列が混在したものに適用できます。スパース行列での演算はスパース行列を出力し、フル行列での演算ではフル行列を出力します。
ほとんどの場合、スパース行列とフル行列が混在した演算では、フル行列を出力します。しかし、例外的に、混在した行列演算も結果が構造的にスパースになる場合があります。たとえば、A.*S
は、少なくとも S と同じくらいスパースです。
例題
S = sparse(1:n,1:n,1) は、n行n列のスパース表現の単位行列を作成します。S
= sparse(eye(n,n)) で同じ S が作られますが、これは要素のほとんどがゼロである
n行n列のフル行列を一時的に作ります。
B = sparse(10000,10000,pi)
は、たぶん有用ではありませんが、正しく実行されます。これは、非ゼロ要素を
1 つだけもつ 10000 行 10000
列の行列を作ります。これは、メモリを 800
メガバイト必要とするので、full(B) は試みないでください。
[i,j,s] = find(S); [m,n] = size(S); S = sparse(i,j,s,m,n);
最後の行と列が、非ゼロ要素をもつ場合、つぎのステートメントを実行してください。
[i,j,s] = find(S); S = sparse(i,j,s);
参考
sparfunディレクトリdiag,find,full,nnz,nonzeros,nzmax,sprandn,sprandsym,spy
| spalloc | spaugment |