2012-02-06 11 views
3

MATLAB APIを使用して 'MATファイル'からデータを読み込む際に、3D配列の 'z'寸法を知る方法があるかどうかを知りたいと思います。私は次のようにファイルからデータをロードする機能を実装しました:C++を使用してMATファイルから3D配列をインポート

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)の結果がであることに気づいたので、APIは3つの次元があることを知っています。

答えて

2

私はあなたがほしいと思うものはmxGetDimensionsです。それぞれの次元のサイズが返されます。これは、3つではなく、任意の数のディメンションで機能するはずです。

関連する問題