在 C++ 中从 .mat 文件读取变量
Reading Variable from .mat file in C++
我正在制作一个程序,其中我在 matlab 中进行一些处理,然后在 matlab 中使用以下命令将结果保存在 .mat 文件中,
save data x;
假设 x=2 的值,
现在我正在从 Visual studio 2010 年的 C++ 程序中读取相同的 data.mat 文件。我的程序正在编译,我也可以完美地读取数组的名称及其维度,..现在问题是当我使用以下命令时,我无法读取 x 的确切值。每次我 运行 程序时,它都会向我显示一些随机值。
variable = matGetNextVariable(pmat, &name);
现在变量的值=50779048..
请指导我哪里有错误。变量的值应该是2,因为我从matlab cammand中保存了2..
这个问题我已经查过了,但是好像没人回答,
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);
}
谢谢。
再次进行大量搜索后,我找到了答案。被问者已经有人问过,只是方式不同,下面是link的回答。我希望它可以帮助别人。
Matlab API reading .mat file from c++, using STL container
我正在制作一个程序,其中我在 matlab 中进行一些处理,然后在 matlab 中使用以下命令将结果保存在 .mat 文件中,
save data x;
假设 x=2 的值,
现在我正在从 Visual studio 2010 年的 C++ 程序中读取相同的 data.mat 文件。我的程序正在编译,我也可以完美地读取数组的名称及其维度,..现在问题是当我使用以下命令时,我无法读取 x 的确切值。每次我 运行 程序时,它都会向我显示一些随机值。
variable = matGetNextVariable(pmat, &name);
现在变量的值=50779048..
请指导我哪里有错误。变量的值应该是2,因为我从matlab cammand中保存了2..
这个问题我已经查过了,但是好像没人回答, 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);
}
谢谢。
再次进行大量搜索后,我找到了答案。被问者已经有人问过,只是方式不同,下面是link的回答。我希望它可以帮助别人。 Matlab API reading .mat file from c++, using STL container