vc里调用matlab[zz].doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vc里调用matlab[zz].doc

vc里调用matlab[zz]在vc里调用matlab的mat文件或调用它的引擎,首先需要在TOOLS-options-directories-include files 和library files里包含 : c:MATLAB\EXTERN\INCLUDE和 c:MATLAB\EXTERN\LIB\WIN32\MICROSOFT\MSVC60 1.如果只调用mat数据文件,那么在工程里需要包含头文件mat.h 在Project-settings-link-object/library modules 里添加libmx.lib libmat.lib 实例:1)将vc里的一个数组y[4][12],写到一个mat文件里。 MATFile *mfp;//mat 文件指针 mxArray *A_ptr;//矩阵指针 double *A; //打开一个test.mat文件,只写,(如果不存在就新建,否则删除重建) mfp=matOpen(d:\\Programes\\matlab\\work\\test.mat,w); //新建一个12*4的矩阵只有实部(在matlab里矩阵都是复矩阵) A_ptr=mxCreateDoubleMatrix(12,4,mxREAL); //让指针A指向这个矩阵 A=mxGetPr(A_ptr); //将y的值传给该矩阵(A[i],i代表A所指向的矩阵的第i个元素。 在VC里数组是按行排放的,在matlab里矩阵是按列排放的,) for(int i=0;i4;i++) for(int j=0;j12;j++) A[i*12+j]=y[i][j]; //将矩阵写到文件test内,起名为x matPutVariable(mfp,x,A_ptr); //关闭文件 matClose(mfp); //释放矩阵空间 mxDestroyArray(A_ptr); 实例:2)将一个mat文件,读到vc里的一个数组y[4][12]。 MATFile *mfp; mxArray *A_ptr; double *A; mfp=matOpen(d:\\Programes\\matlab\\work\\test.mat,r);//如果既要读又要写就用u if(mfp==NULL)return; A_ptr=matGetVariable(mfp,x,); A=mxGetPr(A_ptr); for(int i=0;i4;i++) for(int j=0;j12;j++) y[i][j]=A[i*12+j]; matClose(mfp); mxDestroyArray(A_ptr); 2.如果要调用它的引擎,那么在工程里需要包含头文件engine.h 在Project-settings-link-object/library modules 里添加libmx.lib libmat.lib libeng.lib 实例://将刚才y数组的一行画出来 Engine *ep; mxArray *A_ptr; double *A; A_ptr=mxCreateDoubleMatrix(12,1,mxREAL); A=mxGetPr(A_ptr); //打开matlab引擎 ep=engOpen(D:\\Programes\\matlab\\bin\\win32\\matlab); for(int j=0;j12;j++) A[j]=y[0][j]; //将矩阵A_ptr起名为y放进matlab的数据区 engPutVariable(ep,y,A_ptr); //用指令x=0:1:11新建一个x矩阵//函数engEvalString(Engine *ep,char *string)里的参数string就相当于在matlab的命令窗口里打的命令。 engEvalString(ep,x=0:1:11); //调用plot(x,y)画图 engEvalString(ep,plot(x,y)); mxDestroyArray(A_ptr); //关闭引擎,如果后面的程序继续要用就不用关了 engClose(ep); 上面所用到的函数都可以在MATLAB\EXTERN\INCLUDE\\mat.h和engine.h里看到其声明4?VC++环境下的Matlab开发 ????从上面的转换可以看出,利用Matlab编译器命令生成的C/C++文件,实际上其函数的输入输出参数为mwArray对象。那么可以考虑直接在VC++或其

文档评论(0)

wsh1288 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档