mxCreateSparse   
 2̗vf̓ĂȂXp[XmxArray쐬
mxArray *mxCreateSparse(m, n, nzmax, mxREAL);
m    sB
n    񐔁B
nzmax [vf̐
Xp[Xs̔O̒lƈʒu3̔zŎw
	prFvf̒l (nzmax x 1)
	irFvf̍sTuXNvg (nzmax x 1)
	jcFvf̊e񂪍ŏɌvfԍ ((n+1) x 1)

mxGetPr   f[^̍ŏ̗vf̃AhX擾
double *mxGetPr(const mxArray *array_ptr);

mxGetIr   Xp[Xsirz̎擾
int *mxGetIr(const mxArray *array_ptr);

mxGetJc   Xp[Xsjcz̎擾
int *mxGetIr(const mxArray *array_ptr);

mxGetNzmax    ir, pr, z̗vf̎擾 
int mxGetNzmax(const mxArray *array_ptr);


Ƃ΁A6̔[vf܂Sparrow O
7s3̃Xp[XmxArray̂悤ɍ쐬Ƃ܂B

      ir pr Rg
(2,1) 1  1  1; s2Ȃ̂ir1
(5,1) 4  1  1; s5Ȃ̂ir4
(3,2) 2  1  2; s3Ȃ̂ir2
(2,3) 1  2  3; s2Ȃ̂ir1
(5,3) 4  1  3; s5Ȃ̂ir4 
(6,3) 5  1  3; s6Ȃ̂ir5

[vfԍ@k = 0 1 2 3 4 5 
@@@@sԍ@j = 1 4 2 1 4 5
@@@@ԍ@j = 0 0 1 2 2 2 

jc[0]=0
jc[1]=2
jc[2]=3
jc[3]=6

irz̊evf́AΉ[vf̍s1ƂɒӁB
irźȂ傫̏ԂłȂ΂Ȃ܂B
́Airz(݂)1̍s̈ʒuŏɒ`A
ꂩ(݂)2̍s̈ʒu`A
N܂Œ`邱ƂӖ܂B

1000 x 8 AOvf3Xp[Xsl܂B
ir, jcźA̂悤ɂȂ

subscript   ir  
  (Ik, Jk)
  (73, 2)   72  
  (50, 3)   49  
  (64, 5)   63  
           
j       Jc  Rg 
1   0   0   1͗vf܂݂܂B 
2   1   0   2́Air[0]1̗vf܂݂܂B 
3   2   1   3́Air[1]1̗vf܂݂܂B 
4   3   2   4͗vf܂݂܂B  R̍Ō̗vf̂̒lP傫l
5   4   2   5́Air[3]1̗vf܂ށBT̍ŏ̗vf̂̒l
6   5   3   6͗vf܂݂܂B T̍Ō̗vf̂̒lP傫l
7   6   3   7͗vf܂݂܂B 
8   7   3   8͗vf܂݂܂B 
    8   3   3̔[vf܂B 

for j=Jk(k-1)+1:Jk(k)
	Jc(j) = k;
end

Jc(j) = Jc(j+1)̏ꍇAjɂ͗vf
Jc(j) < Jc(j+1)̏ꍇAk = Jc(j):Jc(j+1)-1 ͗j̗vf] Jk(k)=j

for k = Jc(j):Jc(j+1)-1
	Jk(k)=j
end

k = Jc(j) & Jc(j) = Jc(j+1)̏ꍇAj = j+1
k = Jc(j) & Jc(j) < Jc(j+1)̏ꍇAjk(k) = j

k   1  2  3
jk  2  3  5
       |  |     |
j   1  2  3  4  5  6  7  8 [matlab]
jc  1  1  2  3  3  4  4  4

k   0  1  2
j   1  2  4

j   0  1  2  3  4  5  6  7  8 
jc  0  0  1  2  2  3  3  3  3  

mxCreateDoubleMatrix   
 vf̓ĂȂ2{x_mxArray쐬

#include "matrix.h"
mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag);


m    ]sB
n    ]񐔁B
ComplexFlag 
   mxREAL ܂ mxCOMPLEX.wB

߂l
ꍇ́A쐬mxArraỹ|C^B

ڍ
mxCreateDoubleMatrixpāAmsnmxArray쐬܂B
mxCreateDoubleMatrix́Azpr̊evf0ɏ܂B

mxArray̎gpIƂ́AmxDestroyArrayĂяoĂB


