Я уже передал изображение в свою функцию mexFunction, но теперь мне нужно передать массив изображений, и я изо всех сил пытаюсь сделать все правильно.Это мой код для получения простого изображения.Это прекрасно работает, но когда я вхожу в 3D, я не понимаю, как информация размещается в mxArray.
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])
{
mxArray *matrixIn = prhs[0];
inputImage=(double *)mxGetPr(matrixIn);
int x = int(dims[0]);
int y = int(dims[1]);
volume3D image(inputImage, x, y, 1);
}
volume3D::volume3D(double* image, int x, int y, int z)
{
allocateVolume( x, y, z);
for(int i=0; i<xSize; i++)
for(int j=0; j<ySize; j++) {
volume[i][j][0] = double(image[(i)*x+j]);
}
}
Я сделал что-то подобное, чтобы передать это наоборот
mwSize mrows, ncols;mrows = mxGetM (prhs [0]);ncols = mxGetN (prhs [0]);
plhs[0] = mxCreateNumericMatrix(mrows, ncols, mxDOUBLE_CLASS, mxREAL);
double *matlabTumorMap = mxGetPr(plhs[0]);
const int * dims = mxGetDimensions( plhs[0]);
int x = int(dims[0]);
int y = int(dims[1]);
int z = int(dims[2]);
mwIndex subs[3];
mexPrintf("x %i\n",x);
mexPrintf("y %i\n",y);
mexPrintf("z %i\n",z);
mxArray *matrixTumor = plhs[0];
for(subs[0]=0; subs[0]<x; subs[0]++)
for(subs[1]=0; subs[1]<y; subs[1]++)
for(subs[2]=0; subs[2]<z; subs[2]++)
{
mwIndex x = mxCalcSingleSubscript( matrixTumor,3,subs);
matlabTumorMap[x] = tumorMap.getVoxel(subs[0],subs[1],subs[2]);
}