使用C ++从MAT文件导入3D数组

时间:2012-02-06 10:29:16

标签: c++ matlab

我想知道在使用MATLAB API从'MAT-file'读取数据时是否有办法知道3D数组的'z'维度。我已经实现了一个从文件加载数据的函数,如下所示:

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知道有三个维度。

1 个答案:

答案 0 :(得分:2)

我相信你想要的是mxGetDimensions。它将返回每个尺寸的大小。这适用于任何数量的维度,而不仅仅是3。