C++读取mat文件 & VS2010 环境配置

链接:http://blog.sina.com.cn/s/blog_7f18a96b0100tojj.html

C++读取mat文件:

1.vs2010的配置

    新建一个工程,在属性管理器中选择Debug|Win32->Microsoft.Cpp.Win32.user->VC++目录。设置包含目录为:D:\MATLAB\R2010a\extern\include(我的matlab装在D盘);设置库目录为:D:\MATLAB\R2010a\extern\lib\win32\microsoft。如图

matlab扩张编程

matlab扩张编程
 

 

2.设置环境变量path

      计算机->属性->高级系统设置->高级->环境变量

在Path中已经存在d:\MATLAB\R2010a\bin\,但是d:\MATLAB\R2010a\bin\win32下有个重要的libmat.dll。如果不把d:\MATLAB\R2010a\bin\改为d:\MATLAB\R2010a\bin\win32 程序将无法运行。

      理论上d:\MATLAB\R2010a\bin\应该会向深一步检索到libmat.dll。坑爹的windows这一步并没有去做,害哥花了一晚上才解决这个问题。这步设置完后要重启(环境配置完毕)。

3.使用MATLAB 提供的MAT 文件接口函数

    在C/C++程序中有两种方式可以读取MAT文件数据。利用MATLAB提供的有关MAT文件的编程接口函数。MATLAB的库函数中包含了MAT文件接口函数库,其中有各种对MAT文件进行读写的函数,都是以mat开头的函数。如表1所示。

表1  C语言中的MAT文件读写函数

MAT  函  数

功    能

matOpen

打开 MAT 文件

matClose

关闭 MAT 文件

matGetDir

从 MAT 文件中获得 MATLAB 阵列的列表

matGetFp

获得一个指向MAT 文件的ANSI C 文件指针

matGetVariable

从MAT文件中读取MATLAB阵列

matPutVariable

写MATLAB阵列到MAT文件

matGetNextVariable

从MAT文件中读取下一个MATLAB阵列

matDeleteVariable

从MAT文件中删去下一个MATLAB阵列

matPutVariableAsGlobal

从MATLAB阵列写入到MAT文件中

matGetVariableInfo

从MAT文件中读取MATLAB阵列头信息

matGetNextVariableInfo

从MAT文件中读取下一个MATLAB阵列头信息

 

4.程序举例:

D盘下有一个test.mat文件。代码如下:

#include "mat.h"
#include <stdio.h>

#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="D:\\test.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]);//输出所含矩阵数目
 }

return 0;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值