MATLAB Function Reference    

sparse

スパース行列の作成

表示

詳細

関数 sparse は、行列を MATLAB のスパースストレージ構造で作成します。

S = sparse(A) は、ゼロ要素を取り除いてフル行列をスパース型の行列に変換します。S が、既にスパースの場合、sparse(S) は、S を出力します。

S = sparse(i,j,s,m,n,nzmax) は、ベクトル i, j, s を使い、nzmax 個の非ゼロ要素に対して割り当てられるスペースをもつ mn列のスパース行列を作成します。s のゼロ要素は、i j の対応する値と共に無視されます。ベクトルi, j, s は、同じ長さです。重複する ij の値をもつ 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) の省略形です。これは、mn 列のすべての要素がゼロのスパース行列を作成します。

注意

すべての MATLAB 組み込みの代数、論理、インデックス演算は、スパース行列、または、スパース行列とフル行列が混在したものに適用できます。スパース行列での演算はスパース行列を出力し、フル行列での演算ではフル行列を出力します。

ほとんどの場合、スパース行列とフル行列が混在した演算では、フル行列を出力します。しかし、例外的に、混在した行列演算も結果が構造的にスパースになる場合があります。たとえば、A.*S は、少なくとも S と同じくらいスパースです。

例題

S = sparse(1:n,1:n,1) は、nn列のスパース表現の単位行列を作成します。S = sparse(eye(n,n)) で同じ S が作られますが、これは要素のほとんどがゼロである nn列のフル行列を一時的に作ります。

B = sparse(10000,10000,pi) は、たぶん有用ではありませんが、正しく実行されます。これは、非ゼロ要素を 1 つだけもつ 1000010000 列の行列を作ります。これは、メモリを 800 メガバイト必要とするので、full(B) は試みないでください。

スパース行列を分解し、再度作成します。

最後の行と列が、非ゼロ要素をもつ場合、つぎのステートメントを実行してください。

参考


  spalloc spaugment