2016-04-04 3 views
0

で.MATファイルから変数を読み込み、その後、MATLABで次のコマンドを使用して.MATファイルに結果を保存し、は、私は、私はMathWorks社のMATLABで何らかの処理をしていたプログラムを作っていますC++

save data x; 

ものと想定値を聞かせてx = 2の

私はVisual Studio 2010のC++プログラムから同じdata.matファイルを読んでいます。私のプログラムがコンパイルされていて、配列とその次元の名前も完全に読むことができます。私は次のコマンドを使用しているとき、私はxの正確な値を読み取ることができません。プログラムを実行するたびにランダムな値が表示されます。変数= 50779048の

variable = matGetNextVariable(pmat, &name); 

今値..私はミスをしていますどこ

は親切に私を導きます。 Reading .mat file in C++

void main(int argc, char **argv) 
{ 
    MATFile *pmat; 
    const char* name=NULL; 
    mxArray *pa; 

    /* open mat file and read it's content */ 
    pmat = matOpen("data.mat", "r"); 
    if (pmat == NULL) 
    { 
     printf("Error Opening File: \"%s\"\n", argv[1]); 
     return; 
    } 

    /* Read in each array. */ 
    pa = matGetNextVariable(pmat, &name); 
    while (pa!=NULL) 
    { 
     /* 
     * Diagnose array pa 
     */ 
     printf("\nArray %s has %d dimensions.", name, 
       mxGetNumberOfDimensions(pa)); 

     //print matrix elements 
     printf("\ndata %d",pa); 

     //get next variable 
     pa = matGetNextVariable(pmat,&name); 

     //printf("\ndata %d",pa); 
     //destroy allocated matrix 
     mxDestroyArray(pa); 
    } 

    matClose(pmat); 
} 

はありがとう、私はMathWorks社のMATLAB cammandから2保存されているので、変数の値は、私はすでにこの質問をチェック

...、2でなければなりませんが、誰もがそれに答えていないようです。

+0

デフォルトでは、MATLABは整数を整数ではなく倍精度浮動小数点数として書き込みます。それはあなたの問題かもしれませんが、あなたのコードに関する情報を与えないので、それを伝えることは不可能です。もう一つの解決策は、あなたの.matファイルをバージョン7.3として書くことです(セーブコールに '-v7.3'を追加する)。これにより、ファイルがHDF5ファイルとして書き込まれ、成熟したオープンソースのHDF5 C++ APIを使用してデータを読み取ることができます。 – Justin

+0

@Justinご返信ありがとうございます。私は質問を更新し、自分のコードを含めました。コードに何か不足している場合は、コードをご覧ください。 – nabeel

答えて

関連する問題