Main Content

sparse

対話型分散スパース行列の作成

    説明

    S = sparse(A) は、ゼロ要素を削除することで、対話型分散非スパース行列をスパース形式に変換します。多数のゼロを含む行列をスパース ストレージに変換することにより、メモリを節約できます。

    S = sparse(m,n) は、すべてがゼロからなる mn 列の対話型分散スパース行列を作成します。

    S = sparse(i,j,v) は、ijv の 3 要素から対話型分散スパース行列 S を作成します。S の行数は i の最大値により設定され、S の列数は j の最大値により設定されます。この行列には length(v) 個の非ゼロ要素用にスペースが割り当てられます。

    各非スカラー入力の要素数が同じになるように、入力 ijv のそれぞれに 1 個または N 個の要素が必要です。

    S = sparse(i,j,v,m,n) は、S のサイズを mn 列として指定します。

    S = sparse(i,j,v,m,n,nz) は、nz 個の非ゼロ要素にスペースを割り当てます。構成後に入力する非ゼロ値用に追加のスペースが割り当てるには、この構文を使用すします。

    すべて折りたたむ

    2 番目の次元 (列) で分散される、1000 行 1000 列の密な対話型分散三角行列を作成します。この対話型分散行列を、対話型分散スパース行列に変換します。

    spmd(4)
        C = triu(rand(1000,1000,"codistributed"));
        S = sparse(C);
    end

    4 つのワーカーがある場合、各ワーカーには C の 1000 行 250 列のローカル ピースが格納されます。

    入力引数

    すべて折りたたむ

    入力行列。非スパースまたはスパースの codistributed 行列として指定します。A が既にスパースである場合、sparse(A)A を返します。

    下付き文字のペア。スカラー、ベクトル、または行列の個別の引数として指定します。ij がスカラーでない場合、i(k)j(k)v(k)S(i(k),j(k)) の値を次のように指定します。

    S(i(k),j(k)) = v(k)

    i または j がスカラーの場合、この関数はその値を使用して S の複数の要素を指定します。たとえば、i のみがスカラーの場合、j(k)v(k)S(i,j(k)) の値を次のように指定します。

    S(i,j(k)) = v(k)

    ijv の複数の要素について同じ値をもつ場合、sparsev の値のうち繰り返されたインデックスをもつものを集約します。集約動作は v の値のデータ型によって異なります。

    • logical 値の場合、sparse は関数 any を適用する。

    • double 値の場合、sparse は関数 sum を適用する。

    値。スカラー、ベクトル、または行列として指定します。v の基となる型は double または logical でなければなりません。

    v がスカラーでない場合、i(k)j(k)v(k)S(i(k),j(k)) の値を次のように指定します。

    S(i(k),j(k)) = v(k)

    v がスカラーの場合、この関数はその値を使用して S の複数の要素を指定します。たとえば、v のみがスカラーの場合、i(k)j(k)S(i(k),j(k)) の値を次のように指定します。

    S(i(k),j(k)) = v

    ゼロである v の要素はすべて無視され、ij の対応する下付き文字も同様に無視されます。

    sparse は、v の任意のゼロ要素を無視する前に出力行列の行数と列数を設定します。そのため、v の任意の値を 0 に設定しても、出力行列のサイズは変わりません。

    各次元のサイズ。整数の個別の引数として指定します。mn の基となる型は double でなければなりません。m は行のサイズで、n は列のサイズです。m を指定する場合は、n も指定する必要があります。

    mn を指定しない場合、sparse は既定値の m = max(i)n = max(j) を使用します。これらの最大値は、v のゼロが削除される前に計算されます。

    非ゼロ要素へのストレージの割り当て。非負の整数として指定します。mn の基となる型は double でなければなりません。

    既定値は max([numel(i), numel(j), numel(v), 1]) です。nz はこの値以上でなければなりません。

    スパース行列 S に対し、関数 nnz はこの行列内にある非ゼロ要素の数を返し、関数 nzmax は非ゼロの行列要素に割り当てられたストレージの量を返します。nnz(S)nzmax(S) が返す結果が異なる場合、実際に必要とされるより多いストレージが割り当てられる可能性があります。そのため、nz は値を入力する場合にのみ設定してください。

    バージョン履歴

    R2006b で導入