整理VS_2010读写.mat文件
来源:互联网 发布:ubuntu识别u盘设备 编辑:程序博客网 时间:2024/06/09 17:16
有时用到VS读写.mat文件,所以结合自己的操作过程,整理出如下的操作步骤
1.首先是环境变量Path的配置
计算机->属性->高级系统设置->高级->环境变量
在Path中已经存在D:\MATLAB_2011a\R2011a\bin\,但是D:\MATLAB_2011a\R2011a\bin\win32下有个重要的libmat.dll。如果不把D:\MATLAB_2011a\R2011a\bin\改为 D:\MATLAB_2011a\R2011a\bin\win32,程序无法运行。
理论上D:\MATLAB_2011a\R2011a\bin\应该会向深一步检索到libmat.dll。坑爹的windows这一步并有去做。这步设置完成后要重启电脑。
2.VS 2010配置
//新建一个工程,在属性管理器中选择 工程->属性->VC++目录。
//设置 包含目录为:D:\MATLAB_2011a\extern\include
//设置 库目录为: D:\MATLAB_2011a\extern\lib\win32\microsoft
上面的3条设置并不是必须的,所以用//表示出
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 添加:
D:\...\MATLAB\R2010b\extern\lib\win64\microsoft;
D:\...\MATLAB\R2010b\bin\win64;
利用MATLAB提供的有关mat文件的编程接口函数,MATLAB的库函数中包含了mat文件接口函数库,其中有各种对mat文件进行读写的函数,都是以mat开头的函数。
/*
这个文件代码是用VS_2010读写由MATLAB生成的.mat文件:
1.整个代码的实现是参考网上《C++读写.mat文件》的一篇博客
网址为http://blog.csdn.net/left_la/article/details/8206645
2.首先对于VS_2010的整个配置是完全参照博客的内容
配置时同时参考http://www.360doc.com/content/14/0408/16/15831056_367275320.shtml
《使用VS2010调用matlab的mat格式文件》的文章,尤其注意此文章中的红色字体部分。
3.对于原博客内容中的第12行代码“Matrix<double> A(M,N);”编译通不过,对此作了修改,
用了Eigen的结构,所以头文件部分也加入了一些
4.因为目前还用不到写.mat文件,所以没调试
*/
#include <yvals.h>#include <iostream>#if (_MSC_VER >= 1600)#define __STDC_UTF_16__#endif #include <mat.h>#include <Eigen/Core>int main(){MATFile *pmatFile = NULL;mxArray *pMxArray = NULL;// 读取.mat文件(例:mat文件名为"initUrban.mat",其中包含"initA")double *initA;pmatFile = matOpen("B.mat","r");pMxArray = matGetVariable(pmatFile, "b");initA = (double*) mxGetData(pMxArray);int M = mxGetM(pMxArray); int N = mxGetN(pMxArray);Eigen::MatrixXd A(M,N);for (int i=0; i<M; i++){for (int j=0; j<N; j++)A(i,j) = initA[M*j+i];}matClose(pmatFile);mxFree(initA);std::cout << M<<','<<N<< std::endl;std::cout << A << std::endl;/*// 生成.mat文件double *outA = new double[M*N];for (int i=0; i<M; i++)for (int j=0; j<N; 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);*/}
- 整理VS_2010读写.mat文件
- C++读写.mat文件
- C++读写.mat文件
- C++读写.mat文件
- C++读写.mat文件
- C++读写.mat文件
- C++读写.mat文件
- python 读写mat文件
- MATLAB读写mat文件
- C++读写.mat文件
- C++读写.mat文件
- C++读写.mat文件
- Python读写mat文件
- C++读写.mat文件
- vc++6.0读写MAT文件
- python读写matlab文件.mat
- C 文件读写整理
- Android 读写文件整理
- HDOJ4054 Hexadecimal View[编码题]
- 快速排序算法2(java)
- Android检测当前设备有没有SD卡
- errno详解
- nyoj 833 取石子(七)
- 整理VS_2010读写.mat文件
- 学习嵌入式Linux系统开发基础 第二课(Linux常用命令)
- Eclipse+Maven调试Tomcat 8.0.15 源码 -- 环境配置
- 破解myeclipse10.6
- ios开发 MFI (充电接口外接设备连接,通信) api ExternalAccessory 代码 片段分享
- Qt for IOS开发:app显示启动画面
- 100万行的表删除好慢
- hdu 5135 Little Zu Chongzhi's Triangles(计算几何:三角形面积)
- 根据动态数量内容动态在表格中