- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.如何用VC6读写MATLAB的.mat文件
1、选VC的菜单Tools-Options,在弹出对话框中点选Directories标签,在右方的下拉菜单中选择Include files,然后在下方列表中添加($MATLAB$)externinclude;再在右方的下拉菜单中选择Library files,然后在下方列表中添加($MATLAB$)externlibwin32microsoftmsvc60。
注:上面的($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、一定要加入? #i nclude 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 iostream.h
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:\nick\test.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)