计算机上的mat文件 突然间后缀没了,文档属性变为Microsoft Office Access 表快捷方式?
这是由于matlab和access2003的文件关联冲突引起的。
解决方法如下:
随便进入一个文件夹,
然后选工具选项卡,然后文件夹选项。
然后进入文件类型选项卡,
然后点新建。输入mat,
这时候系统会提示说这会破坏跟access文件的关联,
这时候点是的。
然后重新去看就会发现mat格式的数据就正常了。
mat文件法是先用C或者Fortran编写一个专门的文件,实现原数据与mat文件格式之间的转换,进而借助save、load实现matlab 对原数据的读写。mat文件是matlab数据存储的默认文件格式,由文件头和数据组成,文件扩展名是.mat。
下面介绍如何用vc6.0读写matlab的mat文件:
注:上面的($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. }