Accessing matrices stored inside of cell arrays using MEX files in MATLAB
I am currently writing a MEX function that will have to work with a cell array in MATLAB. The MEX file is written in C. 

Essentially, the input to my function will be a cell array where each entry is a numeric matrix with real values. A simple example is:

    C = cell(1,2);
    C{1} = ones(10,10);
    C{2} = zeros(10,4);

I would like to be able to access the numeric arrays C{1} and C{2} in my MEX file. Ideally, I would like to do this without having to create a second copy of the data in my MEX File (i.e. get pointers for them).


Using the previous example, my current approach is as follows:

    /* declare a pointer variable to the incoming cell array after it is passed to the MEX function */
    mxArray C_CELL = (mxArray *) mxGetData(prhs[0]) 
    
    /* declare  a 2 x 1 array of pointers to access the cell array in C */
    double *myarray[2] //
    
    /* point towards the contents of C_CELL */
    myarray[0] = mxGetPr(C_CELL[0])
    myarray[1] = mxGetPr(C_CELL[1])

Unfortunately this seems to yield "invalid use of undefined type 'struct mxArray_tag'" errors.


Accessing matrices stored inside of cell arrays using MEX files in MATLAB
===

I am currently writing a MEX function that will have to work with a cell array in MATLAB. The MEX file is written in C. 

Essentially, the input to my function will be a cell array where each entry is a numeric matrix with real values. A simple example is:

    C = cell(1,2);
    C{1} = ones(10,10);
    C{2} = zeros(10,4);

I would like to be able to access the numeric arrays C{1} and C{2} in my MEX file. Ideally, I would like to do this without having to create a second copy of the data in my MEX File (i.e. get pointers for them).


Using the previous example, my current approach is as follows:

    /* declare a pointer variable to the incoming cell array after it is passed to the MEX function */
    mxArray C_CELL = (mxArray *) mxGetData(prhs[0]) 
    
    /* declare  a 2 x 1 array of pointers to access the cell array in C */
    double *myarray[2] //
    
    /* point towards the contents of C_CELL */
    myarray[0] = mxGetPr(C_CELL[0])
    myarray[1] = mxGetPr(C_CELL[1])

Unfortunately this seems to yield "invalid use of undefined type 'struct mxArray_tag'" errors.

