C ++を使用してMATファイルから3D配列をインポートする

私はMATLAB APIを使って 'MATファイル'からデータを読み込むときに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は3つの次元があることを知っています。

3

1 答え

私が望むのは、 mxGetDimensions です。それぞれの次元のサイズが返されます。これは、3つではなく、任意の数のディメンションで機能するはずです。

2
追加された