В настоящее время я пишу функцию MEX, которая должна будет работать с массивом ячеек в MATLAB. Файл MEX написан на C.
По сути, входными данными для моей функции будет массив ячеек, где каждая запись представляет собой числовую матрицу с реальными значениями. Простой пример:
C = cell(1,2);
C{1} = ones(10,10);
C{2} = zeros(10,4);
Я хотел бы иметь доступ к числовым массивам C{1} и C{2} в моем файле MEX. В идеале я хотел бы сделать это без необходимости создавать вторую копию данных в моем файле MEX (т.е. получать для них указатели).
Используя предыдущий пример, мой текущий подход выглядит следующим образом:
/* 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])
К сожалению, это, похоже, приводит к ошибкам «недопустимое использование неопределенного типа« struct mxArray_tag »».