2012-02-06 30 views
3

導入3D陣列我想知道是否有從使用MATLAB API A「MAT-文件」讀取數據時知道一個三維陣列的「Z」尺寸的一種方式。我已經實現了一個功能從文件加載數據如下:從MAT-文件中使用C++

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; 
} 

我得到的深度值的時候,爲了我被困知道列數。我已經注意到,函數的結果mxGetNumberOfDimensions(mArrayData)是,因此,該API知道有三個維度。

回答

2

我相信你想要的是mxGetDimensions。它將返回每個維度的大小。這應該適用於任何數量的維度,而不是僅僅3