Хотелось бы узнать, есть ли способ узнать размерность z массива 3D при чтении данных из файла MAT с использованием API-интерфейса MATLAB. Я реализовал функцию загрузки данных из файла следующим образом:
double* importMATFile(const char* i_file)
{
MATFile *pMF;
// open MAT-file
pMF = matOpen(i_file, "r");
// check for file errors
// Matlab Array Data
mxArray *mArrayData;
// Matlab Variable Name
const char* mVarName = NULL;
// read data from file
mArrayData = matGetNextVariable(pMF, &mVarName);
// pointer to mxArray data
double *dataPtr;
dataPtr = (double*) mxGetPr(mArrayData);
// NOTE MATLAB work in COLUMN-MAJOR order
// dimension of the array : rows
int32_t NROWS = mxGetM(mArrayData);
// Right now the z dimension must be known a priori
int32_t NDEPTH = 32
// dimension of the array : cols
int32_t NCOLS = mxGetN(mArrayData) / NDEPTH;
return dataPtr;
}
Я застрял при получении значения DEPTH, чтобы узнать количество столбцов. Я заметил, что результат функции mxGetNumberOfDimensions (mArrayData) равен 3 , поэтому API знает, что есть три измерения.