




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 调用方式1. 将Matlab程序编译为独立可执行文件可以脱离matlab运行exe程序,但需要MCR运行环境,对于有输入变量的函数而言,执行exe会出错,没什么实用价值2. C/C+程序调用Matlab引擎不能脱离matlab使用,实际上主要是用C/C+完成界面编写,通过接口函数调用matlab引擎,C/C+程序向matlab计算引擎传递命令和数据信息,并从matlab计算引擎接收数据信息,相当于在matlab中执行计算程序。利用计算引擎的特点是:节省大量的系统资源,应用程序整体性能较好,但不能脱离matlab的环境运行,且运行速度较慢,在一些特别的引用(如需要进行三维图形显示)时可考虑使用。3. C/C+程序调用Matlab程序编译后的动态链接库可以完全脱离matlab使用,主要思想就是先编译m文件,将函数封装在库文件中,从而可以在C/C+程序中,通过调用DLL实现对matlab代码的调用。利用mcc编译器生成的DLL动态连接库文件,只需在C/C+编译环境中将其包含进来,调用导出函数即可实现原m文件的功能,极大的方便了用户的代码设计。4. C/C+程序调用Matlab程序编译后的COM组件C/C+调用COM组件和调用Matlab程序编译后的动态链接库和的执行效率是相同的,但调用动态链接库实现起来比较简单,调用COM组件实现起来比较复杂,很少使用。2 C/C+调用m文件编译后的动态链接库2.1 Matlab设置步骤1. 命令窗口输入mbuild setup和mex setup命令,选择VC+6.0编译器2. 编写m文件,如add.m(脚本文件和函数文件都可以)function a,b=add(x,y)a=2*x+y;b=3*y;end3. 生成dll文件输入命令:mcc -B cpplib:add add.m或者mcc -W cpplib:add -T link:lib add.m4. 提取add.ctf,add.h,add.dll,add.lib 共4个文件(更高版本的matlab没有ctf文件,只需另外3个就可以)2.2 VC+6.0调用生成的dll文件1. ToolsOptionsDirectoriesInclude files,添加matlab内的include目录,如:D:Program FilesMATLABR2007bexterninclude2. ToolsOptionsDirectoriesLibrary files,添加matlab内的lib目录,如:D:Program FilesMATLABR2007bexternlibwin32microsoft3. 新建控制台程序,命名add_test,将上述4个文件放到工程目录下;4. ProjectSettingsLinkInputObject/library modules,添加:add.lib mclmcrrt.lib mclmcr.lib。或者在预处理中加入下面代码#pragma comment(lib,mclmcrrt.lib)#pragma comment(lib,mclmcr.lib)#pragma comment(lib,add.lib)或者将add.lib、mclmcrrt.lib、mclmcr.lib直接添加到工程中以上三种方法都是在连接时,使用了相应库文件中的函数。5. 新建cpp文件,命名为:add_test.cpp,代码如下/#pragma comment(lib,mclmcrrt.lib)/#pragma comment(lib,mclmcr.lib)/#pragma comment(lib,add.lib)#include #include add.husing namespace std;int main()if(!addInitialize()coutinitilize failed!endl;return -1;mwArray a(1,1,mxDOUBLE_CLASS);mwArray b(1,1,mxDOUBLE_CLASS);a(1,1)=20;b(1,1)=30;mwArray x(1,1,mxDOUBLE_CLASS);mwArray y(1,1,mxDOUBLE_CLASS);/输出参数个数,输出参数,输入参数add(2,x,y,a,b);double *i=new double;double *j=new double;x.GetData(i,1);y.GetData(j,1);coutx=*iy=*jendl;getchar();return 0;3 VC+6.0调用matlab引擎所谓matlab引擎,是指一组matlab提供的接口函数,支持C/C+、Fortran等语言,通过这些接口函数,用户可以在其它编程环境中实现对matlab的控制。主要功能有:打开/关闭一个matlab对话、向matlab环境发送命令字符串、从matlab环境中读取数据、向matlab环境中写入数据。与其他各种接口相比,引擎所提供的matlab功能支持是最全面的,通过引擎方式,应用程序会打开一个新的matlab进程,可以控制它完成任何计算和绘图操作,对所有的数据结构提供100%的支持。同时,引擎方式打开的matlab进程会在任务栏显示自己的图标,打开该窗口,可以观察主程序通过engine方式控制matlab运行的流程,并可在其中输入任何matlab命令。实际上,通过引擎方式建立的对话,是将matlab以ActiveX控件方式启动的。3.1 配置VC6编译器1. ToolsOptionsDirectoriesInclude files,添加matlab内的include目录,如:D:Program FilesMATLABR2007bexterninclude2. ToolsOptionsDirectoriesLibrary files,添加matlab内的lib目录,如:D:Program FilesMATLABR2007bexternlibwin32microsoft3. ProjectSettingsLinkInputObject/library modules,添加:libmx.lib libmat.lib libeng.lib或者在预处理中加入下面代码#pragma comment(lib,libmx.lib)#pragma comment(lib,libmat.lib)#pragma comment(lib,libeng.lib)3.2 程序实例新建控制台工程,命名engine_example,新建cpp文件,命名engine_example.cpp,程序代码如下/#pragma comment(lib,libmx.lib)/#pragma comment(lib,libmat.lib)/#pragma comment(lib,libeng.lib)#include #include math.h#include engine.husing namespace std;void main()const int N=50;double xN,yN;int j=1;for (int i=0;iN;i+)xi=i+1;yi=sin(xi+j*log(xi);j*=-1;Engine *ep;/定义matlab引擎指针if(!(ep=engOpen(NULL)/测试是否启动matlab引擎成功coutCant start Matlab engine!endl;exit(1);/定义mxArray类型的1行N列的实数数组mxArray *xx=mxCreateDoubleMatrix(1,N,mxREAL);mxArray *yy=mxCreateDoubleMatrix(1,N,mxREAL);/将数组x复制到mxArray数组xx中,将数组y复制到mxArray数组yy中memcpy(mxGetPr(xx),x,N*sizeof(double);memcpy(mxGetPr(yy),y,N*sizeof(double);/将mxArray数组xx写入到matlab工作空间,命名为xx/将mxArray数组yy写入到matlab工作空间,命名为yyengPutVariable(ep,xx,xx);engPutVari
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备设施包保管理制度
- 设计公司内控管理制度
- 设计单位现场管理制度
- 设计项目人员管理制度
- 诊所医疗器械管理制度
- 诊断试剂风险管理制度
- 试验示范基地管理制度
- 财务资金收支管理制度
- 货仓搬运安全管理制度
- 货物海关代理管理制度
- 2024年黄冈团风县招聘城区社区工作者真题
- 2025年山东省高考历史试卷真题
- 2025至2030中国农膜行业发展分析及发展前景与投资报告
- 2025图解《政务数据共享条例》V1.0学习解读
- 2025电商平台店铺转让合同模板
- 2025年人教版(2024)初中英语七年级下册期末考试测试卷及答案
- (2025)事业编考试题库(附含答案)
- 女性美学课堂企业制定与实施新质生产力项目商业计划书
- 高端私人定制服务方案
- 2025年保密知识竞赛考试题库300题(含答案)
- 矿产资源储量报告编制和评审中常见问题及其处理意见
评论
0/150
提交评论