で.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でなければなりませんが、誰もがそれに答えていないようです。
デフォルトでは、MATLABは整数を整数ではなく倍精度浮動小数点数として書き込みます。それはあなたの問題かもしれませんが、あなたのコードに関する情報を与えないので、それを伝えることは不可能です。もう一つの解決策は、あなたの.matファイルをバージョン7.3として書くことです(セーブコールに '-v7.3'を追加する)。これにより、ファイルがHDF5ファイルとして書き込まれ、成熟したオープンソースのHDF5 C++ APIを使用してデータを読み取ることができます。 – Justin
@Justinご返信ありがとうございます。私は質問を更新し、自分のコードを含めました。コードに何か不足している場合は、コードをご覧ください。 – nabeel