Main Content

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 内の列の数です。

スパース mxArrayj 番目の列が非ゼロ要素である場合は次のようになります。

  • jc[j] は、j 番目の列の最初の非ゼロ要素の irpr、および pi (存在する場合) にあるインデックスになります。

  • jc[j+1]-1j 番目の列の最後の非ゼロ要素のインデックスになります。

  • スパース行列の j 番目の列で、jc[j] は先行するすべての列の非ゼロ要素の合計数になります。

スパース mxArrayj 番目の列内の非ゼロ要素の数は、以下のとおりです。

jc[j+1] - jc[j];

スパース mxArrayj 番目の列の場合、jc[j] は先行するすべての列の非ゼロ要素の合計数になります。配列 jc の最後の要素である jc[列数] は、スパース mxArray 全体の非ゼロ要素の数である、nnz に等しくなります。

たとえば、以下のように入力して、6 つの非ゼロ要素を含む、Sparrow という名前の 73 列のスパース 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

コメント

(2,1)

1

1

0

列 1 は、ir[0]ir[1] で指定された行をもつ、2 つの非ゼロ要素を含んでいます。

(5,1)

4

1

2

列 2 は、ir[2] で指定された行をもつ、1 つの非ゼロ要素を含んでいます。

(3,2)

2

1

3

列 3 は、ir[3]ir[4]、および ir[5] で指定された行をもつ、3 つの非ゼロ要素を含んでいます。

(2,3)

1

2

6

合計で 6 つの非ゼロ要素があります。

(5,3)

4

1

  

(6,3)

5

1

  

スパースの傾向が強い mxArray の例として、非ゼロ要素を 3 つだけ含む、Spacious という名前の 10008 列のスパース mxArray を考えます。配列 ir 、配列 pr 、および配列 jc は、下記の表にリストされている値を含んでいます。

添字

ir

pr

jc

コメント

(73,2)

72

1

0

列 1 は、非ゼロ要素を含んでいません。

(50,3)

49

1

0

列 2 は、ir[0] で指定された行をもつ、1 つの非ゼロ要素を含んでいます。

(64,5)

63

1

1

列 3 は、ir[1] で指定された行をもつ、1 つの非ゼロ要素を含んでいます。

   

2

列 4 は、非ゼロ要素を含んでいません。

   

2

列 5 は、ir[2] で指定された行をもつ、1 つの非ゼロ要素を含んでいます。

   

3

列 6 は、非ゼロ要素を含んでいません。

   

3

列 7 は、非ゼロ要素を含んでいません。

   

3

列 8 は、非ゼロ要素を含んでいません。

   

3

合計で 3 つの非ゼロ要素があります。

この関数は、置き換える既存のデータに割り当てられているメモリは解放しません。既存のメモリを解放するには、mxSetJc を呼び出す前に、mxGetJc の返すポインターにある mxFree を呼び出します。

matlabroot/extern/examples/mx の次の例を参照してください。

matlabroot/extern/examples/mex の次の例を参照してください。

バージョン履歴

R2006a より前に導入