C 如何从MATLAB将稀疏矩阵传递到共享库

C 如何从MATLAB将稀疏矩阵传递到共享库,c,matlab,sparse-matrix,mex,C,Matlab,Sparse Matrix,Mex,我想将一个稀疏矩阵从MATLAB传递到一个共享库,在那里做一些操作(用C编写),然后返回它 我可以通过一个密集的矩阵来使用,非常简单。但是,我不知道如何从MATLAB将稀疏矩阵传递到共享库。我所发现的都与墨西哥有关 如果您能在MATLAB中提供一些有关稀疏矩阵格式的信息以及在C中的转换,我们将不胜感激 提前感谢。MATLAB内部使用(CSC)格式存储稀疏矩阵。一旦理解了格式,就可以通过获取数组pr、pi、ir和jc(分别使用MEX函数)将稀疏矩阵传递给外部代码 pr(和pi如果矩阵是复杂的)是

我想将一个稀疏矩阵从MATLAB传递到一个共享库,在那里做一些操作(用C编写),然后返回它

我可以通过一个密集的矩阵来使用,非常简单。但是,我不知道如何从MATLAB将稀疏矩阵传递到共享库。我所发现的都与墨西哥有关

如果您能在MATLAB中提供一些有关稀疏矩阵格式的信息以及在C中的转换,我们将不胜感激


提前感谢。

MATLAB内部使用(CSC)格式存储稀疏矩阵。一旦理解了格式,就可以通过获取数组
pr
pi
ir
jc
(分别使用MEX函数)将稀疏矩阵传递给外部代码

  • pr
    (和
    pi
    如果矩阵是复杂的)是长度为
    nzmax
    的双精度数组,包含矩阵的非零值

  • ir
    指向长度为
    nzmax
    的整数数组,该数组包含
    pr
    pi
    中相应元素的行索引

  • jc
    指向长度为
    n+1
    的整数数组,其中
    n
    是稀疏矩阵中的列数。
    jc
    数组包含列索引信息。如果稀疏矩阵的
    j
    -th列有任何非零元素,
    jc[j]
    ir
    中的索引,
    pr
    pi
    如果存在,
    j
    -th列中第一个非零元素的索引,
    jc[j+1]-1
    是该列中最后一个非零元素的索引。对于稀疏矩阵的
    j
    -th列,
    jc[j]
    是前面所有列中非零元素的总数。
    jc
    数组的最后一个元素
    jc[n]
    ,等于整个稀疏矩阵中非零元素的数量
    nnz

可能重复