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
を呼び出します。
例
の次の例を参照してください。matlabroot
/extern/examples/mx
の次の例を参照してください。matlabroot
/extern/examples/mex
バージョン履歴
R2006a より前に導入