- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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++或其
您可能关注的文档
最近下载
- 食品经营(仅销售预包装食品)备案申请表-模板.pdf VIP
- 宁夏枣泉电厂一期工程的环境影响的报告书简本.doc VIP
- 2022年国家公务员录用考试行测常识题库及答案(共1344题).pdf VIP
- (人教PEP2024版)英语三年级上册全册大单元教学设计(新教材).docx
- 北京交通大学DSP系统课程设计报告电话拨号音检测.docx VIP
- 妇产科规培年度述职报告.docx VIP
- 【庄歌】黄沙坪矿区生产实习.doc VIP
- 2025届高考英语二轮复习:非谓语动词课件 (共49张PPT).ppt.pptx VIP
- 一种驱虫斑鸠菊提取物的外用制剂及其制备方法.pdf VIP
- 杭州优迈SMART系统中文标示电气原理图.pdf VIP
文档评论(0)