使用VS调用matlab的mat格式文件Word文件下载.docx
- 文档编号:19015928
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:6
- 大小:16.03KB
使用VS调用matlab的mat格式文件Word文件下载.docx
《使用VS调用matlab的mat格式文件Word文件下载.docx》由会员分享,可在线阅读,更多相关《使用VS调用matlab的mat格式文件Word文件下载.docx(6页珍藏版)》请在冰豆网上搜索。
高级系统设置-&
高级-&
环境变量
在Path中已经存在D:
\MATLAB_2011a\R2011a\bin\,但是D:
\MATLAB_2011a\R2011a\bin\win32下有个重要的libmat.dll。
如果不把d:
\MATLAB\R2010a\bin\改为D:
\MATLAB_2011a\R2011a\bin\win32程序将无法运行。
理论上D:
\MATLAB_2011a\R2011a\bin\应该会向深一步检索到libmat.dll。
坑爹的windows这一步并没有去做。
这步设置完后要重启(环境配置完毕)。
3.
3.使用MATLAB提供的MAT文件接口函数
在C/C++程序中有两种方式可以读取MAT文件数据。
利用MATLAB提供的有关MAT文件的编程接口函数。
MATLAB的库函数中包含了MAT文件接口函数库,其中有各种对MAT文件进行读写的函数,都是以mat开头的函数。
如表1所示。
表1C语言中的MAT文件读写函数MAT函数
功能
matOpen
打开MAT文件
matClose
关闭MAT文件
matGetDir
从MAT文件中获得MATLAB阵列的列表
matGetFp
获得一个指向MAT文件的ANSIC文件指针
matGetVariable
从MAT文件中读取MATLAB阵列
matPutVariable
写MATLAB阵列到MAT文件
matGetNextVariable
从MAT文件中读取下一个MATLAB阵列
matDeleteVariable
从MAT文件中删去下一个MATLAB阵列
matPutVariableAsGlobal
从MATLAB阵列写入到MAT文件中
matGetVariableInfo
从MAT文件中读取MATLAB阵列头信息
matGetNextVariableInfo
从MAT文件中读取下一个MATLAB阵列头信息
4.程序举例:
读取.mat文件,并把mat内容存储在图像中并显示。
注意:
坑爹的默认读取.mat的方式是按列读取,不是按行读取,害的劳资瞎忙乎一晚上!
!
[cpp]viewplaincopyprint?
#include"
stdafx.h"
/*intmain()*/
intloadMat(Mat&
amp;
regId)
{
MATFile*pmat;
constchar**dir;
constchar*file;
constchar*name;
intndir;
mxArray*pa;
file="
/labels3_ms.mat"
;
//双反斜杠防止转义
pmat=matOpen(file,"
r"
);
//打开文件,返回指向文件指针
if(pmat==NULL){
cout&
lt;
&
"
Erroropeningfile"
return
(1);
}
dir=(constchar**)matGetDir(pmat,&
ndir);
//ndir表示mat文件中含有矩阵数目
if(dir==NULL){
std:
:
cout&
Errorreadingdirectoryoffile"
else
{
for(inti=0;
i&
ndir;
i++)
MatNUM:
"
//重新打开文件;
pa=matGetNextVariable(pmat,&
name);
//返回指向文件头文件信息的指针,指针类型为*mxArray;
//name是矩阵的名字;
intii=mxGetM(pa);
//矩阵行数400
intjj=mxGetN(pa);
//矩阵列数300
int*pm=(int*)mxGetPr(pa);
//获取矩阵数值,返回指向矩阵第一数值的指针;
regId=Mat:
zeros(jj,ii,CV_8UC1);
/*ofstreamout("
/abc.txt"
*/
mapregSize;
intm=0;
for(intr=0;
r
intn=0;
m++;
uchar*id=regId.ptr(r);
for(intc=0;
c
id[c]=(*pm);
pm++;
regSize[*pm]++;
regSize:
//for(map:
iteratoriter=regSize.begin();
iter!
=regSize.end();
iter++)
//{
//cout&
first&
size:
second&
//}
mxFree(dir);
////normalize(regId,regId,0,1,CV_MINMAX,CV_32FC1);
regId=regId.t();
//imshow("
show"
regId);
//waitKey();
//imwrite("
/regId1.jpg"
//return1;
returnregSize.size();
}
另附:
使用VS调用matlab的.m文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 VS 调用 matlab mat 格式文件