当我调用mexCallMATLAB(1,a,1,b,"转置")时,Matlab崩溃了

时间:2017-03-07 03:19:50

标签: matlab mex

我想创建一个新的稀疏矩阵并将输入稀疏矩阵的值传递给它,然后调用Matlab来获得它的转置。代码崩溃了,你能给我一些建议吗?

extern void mexFunction(int iNbOut, mxArray *pmxOut[],
        int iNbIn, const mxArray *pmxIn[])
{

    mxArray *A, *B;
    double *d,*p,*pin,*out;
    mwSize m,n,nzmax;
    mwIndex *ir, *jc;

 // get the information of input sparse matrix
    m = mxGetM(pmxIn[0]);
    n = mxGetN(pmxIn[0]);
    nzmax = mxGetNzmax(pmxIn[0]);

    ir = mxGetIr(pmxIn[0]);
    jc = mxGetJc(pmxIn[0]);
    pin = mxGetPr(pmxIn[0]);

  // create a new sparse matrix and pass the input matrix to it
    A = mxCreateSparse(m, n, nzmax, mxREAL);
    mxSetIr(A, ir);
    mxSetJc(A, jc);
    mxSetPr(A, pin);
    d = mxGetPr(A);

    B = mxCreateSparse(m, n, nzmax, mxREAL);
// get the transpose of A by call matlab
    mexCallMATLAB(1, &B, 1, &A, "transpose");

    p = mxGetPr(B);

    pmxOut[0] = mxCreateNumericArray(1 , nzmax, mxSINGLE_CLASS,mxREAL); 
    out =  mxGetPr(pmxOut[0]);
    for(mwSize i = 0; i < nzmax; i++)
    {
        out[i] = p[i];
        mexPrintf("pmxOut = %f", out[i]);
    }


}

0 个答案:

没有答案
相关问题