• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

VS2010+matlab2012b环境下C++写MAT文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本人乃C++白痴一枚,今需将一个int数组用mat文件保存,奋战半日有余,终成。恐日后遇类似情况无所从,故而留下此文,待日后查询。

 

PS:工程设置,亲测,http://blog.csdn.net/left_la/article/details/8206645给出的步骤完全没错,以下为详细过程。

我的计算机环境是win7 64位系统,VS2010,matlab R2012b。

一、工程配置:
1.C/C++->常规->附加包含目录 添加:
MATLAB\R2010b\extern\include
MATLAB\R2010b\extern\include\win64
2.链接器->常规->附加库目录 添加:
MATLAB\R2010b\extern\lib\win64\microsoft
MATLAB\R2010b\extern\lib\win32\microsoft
3.链接器->输入->附加依赖库 添加:
libmat.lib
libmx.lib
libmex.lib
libeng.lib

由于所安装的matlab为64位,要调用其函数,需要将工程转换为X64
4.顶菜单->生成->配置管理器->平台:X64
5.链接器->高级->目标计算机:
MachineX64(/MACHINE:X64)

6.计算机环境变量->path 添加:
E:\DevTools\MATLAB\R2010b\extern\lib\win64\microsoft;
E:\DevTools\MATLAB\R2010b\bin\win64;

 

代码部分:

包含头文件:

#include <matrix.h>

#include <mat.h>

写文件:

MATFile *pmatFile = matOpen(matName,"w");
mxArray *pMxArray = NULL;
pMxArray = mxCreateDoubleMatrix(N, M, mxREAL);

double* datas = NULL;
datas = (double*)mxMalloc(N*M*sizeof(double)); 


mxSetData(pMxArray, datas);
matPutVariable(pmatFile, "datas", pMxArray);

matClose(pmatFile);

 

要注意的是:

void mxSetData(mxArray *pm, void *pr);

pr指Pointer to an array. Each element in the array contains the real component of a value. The array must be in dynamic memory; call mxCalloc to allocate this memory. 

动态分配,调用mxMalloc乃关键。

mxMalloc申请的内存,无需mxFree,亦无需free,系统自将释放。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi XE7 用indy开发微信公众平台(4)- 接收普通消息发布时间:2022-07-18
下一篇:
Calling node.js from Delphi发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap