私は現在、MATLABのセル配列で動作する必要があるMEX関数を作成しています。MEXファイルはCで書かれています。
基本的に、私の関数への入力は、各エントリが実数値の数値行列であるセル配列になります。簡単な例は次のとおりです。
C = cell(1,2);
C{1} = ones(10,10);
C{2} = zeros(10,4);
MEXファイルの数値配列C{1}およびC{2}にアクセスできるようにしたいと思います。理想的には、MEXファイルにデータの2番目のコピーを作成せずにこれを実行したいと思います(つまり、それらのポインターを取得します)。
前の例を使用すると、現在のアプローチは次のとおりです。
/* 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])
残念ながら、これにより「未定義の型'structmxArray_tag'の無効な使用」エラーが発生するようです。