[转]关于.mat文件

计算机上的mat文件 突然间后缀没了,文档属性变为Microsoft Office Access 表快捷方式?

这是由于matlab和access2003的文件关联冲突引起的。
解决方法如下:
随便进入一个文件夹,
然后选工具选项卡,然后文件夹选项。
然后进入文件类型选项卡,
然后点新建。输入mat,
这时候系统会提示说这会破坏跟access文件的关联,
这时候点是的。
然后重新去看就会发现mat格式的数据就正常了。

 

 

mat文件法是先用C或者Fortran编写一个专门的文件,实现原数据与mat文件格式之间的转换,进而借助save、load实现matlab 对原数据的读写。mat文件是matlab数据存储的默认文件格式,由文件头和数据组成,文件扩展名是.mat。

    下面介绍如何用vc6.0读写matlab的mat文件:

1、选VC 的 菜单Tools->Options ,在弹出对话框中点选Directories 标签,在右方的下拉菜单中选择Include files ,然后在下方列表中添加($MATLAB$)externinclude ; 再在右方的下拉菜单中选择Library files ,然后在下方列表中添加($MATLAB$)extern.lib win32microsoftmsvc60

注:上面的($MATLAB$) 以计算机中MATLAB 的安装位置替换;如果使用的VC 版本是5.0 ,则把列表中添加路径中的msvc60 替换成msvc50 即可。

2、对于需要操作.mat 文件的工程,选择菜单Project->Settings ,在弹出对话框中点选Link 标 签,在Object/library modules 中加入 libmx.lib、libmat.lib 。下面是程序中的调用,以例子说明用法,必要时候如用到mxArray时候还要加入 sgl.lib 和 libmatlbmx.lib。

3、一定要加入  #include "mat.h" ,如果要对mxArray进行操作,要加入 include "matlab.h" 。具体的mfc程序的例子见“e:.....StaticDraw”工程。

C语言的源码:

写入.mat 文 件的示例:

1.   #include "mat.h"

2.    

3.   void main() {

4.       MATFile *pMF; // mat 文件

5.       mxArray *pA; // 矩阵指针

6.       double *A; // 数据指针

7.       int i, j;

8.       // 打开一个test.mat 文件,只写,如果不存在就新建,否则删除重建

9.       pMF = matOpen("test.mat", "w");

10.      // 新建一个12*4 的矩阵只有实部(在MATLAB 里矩阵都是复 矩阵)

11.      pA = mxCreateDoubleMatrix(12, 4, mxREAL);

12.      // 给这个矩阵命 名为x

13.      mxSetName(pA, "x");

14.      // 让指针Array 指向这个矩阵的数据

15.      A = mxGetPr(pA);

16.      // VC 里数组是按行排放的,在MATLAB 里矩阵是按列 排放的,)

17.      for (i = 0; i < 12; i++)

18.          for (j = 0; j < 4; j++)

19.              A[j * 12 + i] = i + 0.001 * j;

20.      // 将矩阵写到文 件test

21.      matPutArray(pMF, pA); //好像没这个函数,如何实现看mfc的源程序

22.      // 释放矩阵空间

23.      mxDestroyArray(pA);

24.      // 关闭文件

25.      matClose(pMF);

26.  }

27.   

读出.mat 文 件的示例:

1.   #include

2.   #include "mat.h"

3.    

4.   void main() {

5.       MATFile *pMF; // mat 文件

6.       mxArray *pA; // 矩阵指针

7.       double *A; // 数据指针

8.       int i, j;

9.       // 打开test.mat 文件,只读(这里作为简单示例不做错误检查)

10.      pMF = matOpen("d: ick est.mat", "r");

11.      // 获得矩阵

12.      pA = matGetArray(pMF, "x");

13.      // 获得矩阵数据 地址

14.      A = mxGetPr(pA);

15.      // 列印矩阵

16.      for (i = 0; i < 12; i++) {

17.          for (j = 0; j < 4; j++) cout << A[j * 12 + i] << ' ';

18.          cout << endl;

19.      }

20.      // 释放矩阵空间

21.      mxDestroyArray(pA);

22.      // 关闭文件

23.      matClose(pMF);/**/

24.  }

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值