mxSetJc (C および Fortran)
スパース配列の配列 JC
C 構文
#include "matrix.h" void mxSetJc(mxArray *pm, mwIndex *jc);
Fortran 構文
#include "fintrf.h" subroutine mxSetJc(pm, jc) mwPointer pm, jc
引数
pmスパース
mxArrayへのポインターjc配列
jcへのポインター
説明
mxSetJc を使用して、スパース mxArray の新しい配列 jc を指定します。配列 jc は、n+1 個の要素をもつ整数配列です。ここで、n はスパース mxArray 内の列の数です。
スパース mxArray の j 番目の列が非ゼロ要素である場合は次のようになります。
jc[j]は、j番目の列の最初の非ゼロ要素のir、pr、およびpi(存在する場合) にあるインデックスになります。jc[j+1]-1はj番目の列の最後の非ゼロ要素のインデックスになります。スパース行列の
j番目の列で、jc[j]は先行するすべての列の非ゼロ要素の合計数になります。
スパース mxArray の j 番目の列内の非ゼロ要素の数は、以下のとおりです。
jc[j+1] - jc[j];
スパース mxArray の j 番目の列の場合、jc[j] は先行するすべての列の非ゼロ要素の合計数になります。配列 jc の最後の要素である jc[列数] は、スパース mxArray 全体の非ゼロ要素の数である、nnz に等しくなります。
たとえば、以下のように入力して、6 つの非ゼロ要素を含む、Sparrow という名前の 7 行 3 列のスパース mxArray を考えます。
Sparrow = zeros(7,3); Sparrow(2,1) = 1; Sparrow(5,1) = 1; Sparrow(3,2) = 1; Sparrow(2,3) = 2; Sparrow(5,3) = 1; Sparrow(6,3) = 1; Sparrow = sparse(Sparrow);
以下の表は、配列 ir、配列 jc、および配列 pr の内容のリストです。
| 添字 | ir | pr | jc | コメント |
|---|---|---|---|---|
|
|
|
|
| 列 1 は、 |
|
|
|
|
| 列 2 は、 |
|
|
|
|
| 列 3 は、 |
|
|
|
|
| 合計で 6 つの非ゼロ要素があります。 |
|
|
|
| ||
|
|
|
|
スパースの傾向が強い mxArray の例として、非ゼロ要素を 3 つだけ含む、Spacious という名前の 1000 行 8 列のスパース mxArray を考えます。配列 ir 、配列 pr 、および配列 jc は、下記の表にリストされている値を含んでいます。
| 添字 | ir | pr | jc | コメント |
|---|---|---|---|---|
|
|
|
|
| 列 1 は、非ゼロ要素を含んでいません。 |
|
|
|
|
| 列 2 は、 |
|
|
|
|
| 列 3 は、 |
|
| 列 4 は、非ゼロ要素を含んでいません。 | |||
|
| 列 5 は、 | |||
|
| 列 6 は、非ゼロ要素を含んでいません。 | |||
|
| 列 7 は、非ゼロ要素を含んでいません。 | |||
|
| 列 8 は、非ゼロ要素を含んでいません。 | |||
|
| 合計で 3 つの非ゼロ要素があります。 |
この関数は、置き換える既存のデータに割り当てられているメモリは解放しません。既存のメモリを解放するには、mxSetJc を呼び出す前に、mxGetJc の返すポインターにある mxFree を呼び出します。
例
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mx","filename")]);
ここで filename は、次のようになります。
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mex","filename")]);
ここで filename は、次のようになります。
バージョン履歴
R2006a より前に導入