【C++读取".mat"文件】“.mat文件”存储了复数矩阵,为什么用C++读取数据时,只能读出实部,读不出虚部?

代码如下:
#include "mat.h"
#include <iostream>
#include <stdio.h>
#include <complex>
using namespace std;
#pragma comment(lib,"libmat.lib")
#pragma comment(lib,"libmx.lib")
int main()
{
MATFile *pmat;
const char **dir;
const char *file;
const char *name;
int ndir;
mxArray *pa;
file="C:\\Users\\Administrator\\Documents\\Visual Studio 2010\\Projects\\ReadMatFile\\ReadMatFile\\CIR_s0000006_1.mat"; //双反斜杠防止转义
pmat=matOpen(file, "r");//打开文件,返回指向文件指针
if (pmat == NULL)
{
printf("pmat==NULL");//cout<<"Error opening file:" <<file<<endl;
return(1);
}
dir = (const char **)matGetDir(pmat, &ndir);
//ndir 表示mat文件中含有矩阵数目
if (dir == NULL)
{
printf("Error reading directory of file:");
return(1);
}else
{
printf("Directory of %s\n",file);
for (int i=0; i < ndir; i++)
printf("%s\n",dir[i]);//输出所含矩阵数目
}
mxArray *pMxArray = NULL;
complex<double> *initA=NULL;
pMxArray = matGetVariable(pmat, "cir0000200");
initA = (complex<double> *) mxGetData(pMxArray);
cout<<(*initA)<<" ";
}

使用mxGetPr(pMxArray)和mxGetPi(pMxArray),它们分别返回实部矩阵和虚部矩阵的指针
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-14
兄弟,我也面临同样的问题!握爪爪.....

...存储了复数矩阵,为什么用C++读取数据时,只能读出实部,读不出虚部...
使用mxGetPr(pMxArray)和mxGetPi(pMxArray),它们分别返回实部矩阵和虚部矩阵的指针

C++读写Mat文件
当面临数据格式不兼容,例如文本文件以字符串形式存储巨大数据集,且无法直接在Matlab中读取时,寻求一种通用的方法来转换数据格式便显得至关重要。在这种情况下,直接使用C++进行文本数据读取、转换,并存入Matlab可识别的.mat文件格式,成为一种可行的解决方案。实现这一目标需要进行一些前置准备工作。首先,...

C++读写Mat文件
因此,直接使用C++语言读取文本数据,转换为浮点数后存入mat文件,再在Matlab中直接加载这一方法显得更为可行。此做法简化了数据传输流程,避免了在不同语言间转换时可能存在的效率损失和兼容性问题。在开始实施C++读写mat文件之前,必须进行必要的准备工作。这包括环境变量的修改、新建VS工程、配置工程属性以...

linux系统下c++程序读取matlab数据文件(.mat)
应该是libmat.so没有编进去 建议检查流程 \/usr\/local\/MATLAB\/R2012a\/bin\/glnxa64 libmat.so 这个文件确实存在 确定该文件中确实有提到的几个函数 确定该so文件已成功编译到你的elf中 这几点确定后 就应该不会出这个问题了 强烈怀疑\/usr\/local\/MATLAB\/R2012a\/bin\/glnxa64 libmat.so这个文件 按照...

如何用c++读取mat文件
ifstream infile("file.mat");是不是这种的?头文件#include<fstream>

怎样将matlab中的.mat 文件转换为二进制文件,输入到c++程序中使用
回答:1. “二进制文件“才是最难以使用的格式。.mat本身就是一种二进制文件,所以除了matlab别的软件都不认识。要想跨软件,还是用字符格式的文件来存数据最好。 2. 或者,用C++调用matlab的引擎来解析mat文件也可以。

c++里mat是什么
在C++的编程体系下,Mat类在OpenCV中是最重要的一种图像表示形式(即为Matrix)。这里的Mat 可以指定存储的数据类型、行列数,以及每个元素中的数值个数(通道数)等等。Mat 类的数据分为两个部分: 1.属性部分 2.数据部分属性部分存储了一系列的矩阵属性:行数、列数、通道数、数据类型、矩阵数据的...

关于C\/C++读取matlab生成的mat文件中的结构体问题
用fread(),代码如下:struct tagXXX { string str;int n;} FILE * pFile=NULL;pFile=fopen("xx.xx","r");\/\/判断是否打开成功就自己写吧 tagXXX tag;wread(&tag,sizeof(tag),1,pFile);\/\/ 写用fwrite()cout<<tag.str<<"\\n"<<endl;cout<<tag.n<<"\\n"<<endl;fclose(pFile...

摄像机标定:c++怎么读取txt文件命名的jpg格式图片,并且用于摄像机标定...
摄像机标定:c++怎么读取txt文件命名的jpg格式图片,并且用于摄像机标定 1,2,3,。。,7图片保存在calibration文件夹里面。请问怎么打开这些标定板图片,然后用于摄像机标定?谢谢。图片是我的txt文件内容,看有没有错误??在代码之中应该怎么导入呢?charf... 1,2,3,。。,7图片保存在calibration文件夹里面。请问怎么...

在VS2010平台上用C++读mat文件,内存足够但是文件读不出
某个值,值是多少?你的操作系统是多少位?VS2010平台是那个用的C++编译器是多少位?还有17G,你都读取了,搞笑吧,这么大的数据,不用数据库,用mat。。。

相似回答