- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c读mat
C++读写.mat文件分类:?C/C++2012-11-21 10:50?1869人阅读?评论(0)?收藏?举报最近在编写C++程序的过程中,需要使用matlab生成的.mat文件,于是查找了基本使用方法。我的计算机环境是win7 64位系统,VS2010,matlab R2010b。一、工程配置:1.C/C++-常规-附加包含目录添加:MATLAB\R2010b\extern\includeMATLAB\R2010b\extern\include\win642.链接器-常规-附加库目录添加:MATLAB\R2010b\extern\lib\win64\microsoftMATLAB\R2010b\extern\lib\win32\microsoft3.链接器-输入-附加依赖库添加:libmat.liblibmx.liblibmex.liblibeng.lib由于所安装的matlab为64位,要调用其函数,需要将工程转换为X644.顶菜单-生成-配置管理器-平台:X645.链接器-高级-目标计算机:MachineX64(/MACHINE:X64)6.计算机环境变量-path 添加:E:\DevTools\MATLAB\R2010b\extern\lib\win64\microsoft;E:\DevTools\MATLAB\R2010b\bin\win64;二、所用到的基本读取写入mat文件代码示例:首先需要包含头文件:#include mat.h[cpp]?view plaincopyMATFile?*pmatFile?=?NULL;??mxArray?*pMxArray?=?NULL;????//?读取.mat文件(例:mat文件名为initUrban.mat,其中包含initA)??double?*initA;????pmatFile?=?matOpen(initUrban.mat,r);??pMxArray?=?matGetVariable(pmatFile,?initA);??initA?=?(double*)?mxGetData(pMxArray);??M?=?mxGetM(pMxArray);??N?=?mxGetN(pMxArray);??Matrixdouble?A(M,N);??for?(int?i=0;?iM;?i++)??????for?(int?j=0;?jN;?j++)??????????A[i][j]?=?initA[M*j+i];????matClose(pmatFile);??mxFree(initA);????//?生成.mat文件??double?*outA?=?new?double[M*N];??????for?(int?i=0;?iM;?i++)??????????for?(int?j=0;?jN;?j++)??????????????outA[M*j+i]?=?A[i][j];??pmatFile?=?matOpen(A.mat,w);??pMxArray?=?mxCreateDoubleMatrix(M,?N,?mxREAL);??mxSetData(pMxArray,?outA);??matPutVariable(pmatFile,?A,?pMxArray);??matClose(pmatFile);??三、程序说明1.使用matOpen函数打开mat文件MATFile *matOpen(const char *filename,const char *mode)mode:r:以只读方式打开u:更新模式,可读可写,但是如果要打开的数据文件不存在,也不会创建新的文件w:以写入方式打开,只能写如入,如果要打开的数据文件不存在,则创建一个新的文件2.使用matGetVariable函数读取mat文件中的变量mxArray * matGetVariable(MATFile * pMF, const char * name);读取名为name的变量,返回一个数据阵列指针3.使用mxGetData函数获取数据阵列中的数据void *mxGetData(const mxArray *pa?);返回时需要使用强制类型转换。4.使用mxGetM和mxGetN函数获取数据阵列矩阵的维数size_t mxGetM(const mxArray *pa);size_t mxGetN(const mxArray *pa);5.使用mxCreateDoubleMatrix函数创建数据阵列为双浮点数矩阵mxArray *mxCreateDoubleMatrix(mwSize m, mwSize n, mxComplexity flag);6.使用mxSetData函数将变量存入数据阵列void mxSetData
您可能关注的文档
最近下载
- 交通银行真题及答案(可下载).doc VIP
- 《建筑节能与可再生能源利用通用规范》.pdf VIP
- GZ067 智能节水系统设计与安装赛项正式赛卷模块A 评分标准-2023年全国职业院校技能大赛赛项正式赛卷.docx VIP
- 高标准农田建设项目施工组织设计 .pdf VIP
- TPM课件完整版本.ppt VIP
- 河北秦皇岛职业技术学院选聘专任教师考试真题2024.docx VIP
- 学堂在线《临床中成药应用》作业单元考核答案.docx VIP
- 三国两晋南北朝的政权更迭与民族交融ppt课件.pptx VIP
- 围墙护栏制作与安装工程检验批质量验收记录.docx VIP
- 2025年甘肃省张掖市辅警考试题库(附答案).docx VIP
文档评论(0)