最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
スパース配列の配列 JC
#include "matrix.h" void mxSetJc(mxArray *pm, mwIndex *jc);
#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