- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
matlab和VC++混合编程.ppt
matlab与vc++混合编程 王勤湧 导师:罗家融 三种方式: 1.利用matlab引擎 2.用Matlab自带的Matlab Compiler 3.combuilder工具 版本:matlab7.1+vc6.0 一、matlab引擎 matlab引擎库提供一些接口函数,利用这些接口函数,用户可以在自己的程序中以计算引擎方式调用MATLAB。在这种方式中,应用程序和matlab运行于独立的两个进程,两者通过相关技术通信。 接口函数 现场演示 优点:支持所有的MATLAB函数,使用方便简单 缺点:混合编程后的可执行程序脱离不了MATLAB的运行环境;在调用引擎之后是按照MATLAB的执行方式进行的,由于MATLAB是解释执行代码,运行速度较慢。 二、使用MATLAB编译器 MATLAB编译器是一个运行于MATLAB环境的独立工具。其主要功能是把M程序转变成C/C++代码,再调用外部C/C++编译器把产生的源代码编译、链接。编译器可将M文件转换成独立可执行文件或C/C++动态连接库函数。 使用前所要做的准备 1.matlab中mex -setup和mbuild -setup,选择vc编译器 2.mcc -B csglsharedlib:matlab_compiler(生成的文件名)Compiler(M文件名) 3.将生成的.h,.dll,.lib,.ctf文件复制到vc工程目录 4.设置vc包含文件,库文件路径 关键点 .h文件中3个函数的使用 首先定义数组并存入我们要进行函数操作的数据(也就是所谓的实参);然后将这数组转换为 matlab 可以识别的矩阵;然后调用 m 文件中自定义的函数,对矩阵进行操作;最后将结果再转回 VC 支持的数据格式 现场演示 三、COM组件 COM是component object module的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准,就可以实现调用它。matlab6.5新推出来的combuilder就是把用matlab编写的程序做成com组件,供其他语言调用。该方法实现简单,通用性强,而且几乎可以使用Matlab的任何函数。因此在程序较大、调用工具箱函数或调用函数较多时推荐使用,这也是Matlab公司推荐的使用方法。 使用前所要做的准备 1、在matlab command window 输入如下命令: comtool ,新建com工程组件 2.复制生成的几个关键文件至vc工程目录 (3个文件:mwcomtypes.h,com_test_idl_i.c,com_test_idl.h) 调用步骤: CoInitialize();//com组件初始化 CoCreateInstance();//创建一个com对象 利用com调用自定义的matlab函数; com-Release();//释放com对象 CoUninitialize();//结束com组件 VARIANT类型 com在传递参数是使用的是VARIANT类型,主要成员是一个变量和一个联合体组成,变量表示着该联合体由各种类型的数据成员构成, 而该变量则用来指明联合体中目前起作用的数据类型,接收到的数据就存储在该联合体的某个数据成员中。 现场演示 除此之外,matlab还可与delphi,fortran,excel,vb等连接使用,为用户提供了极大的方便 * 引擎是matlab最早提供的外部接口技术 matlab编译器不会把所有的M文件转化为C/C++,而是产生一些必要的C/C++接口函数,其余的M程序都放到.ctf文件中 .h中的初始化函数,matlab函数与结束调用函数,3个函数贯穿使用的全过程 函数 说明 engOpen 打开MATLAB计算引擎 engClose 关闭MATLAB计算引擎 engGetVariable 从MATLAB计算引擎获得数据 engPutVariable 向MATLAB计算引擎发送数据 engEvalString 在MATLAB计算引擎中执行命令 engOutputBuffer 创建用于MATLAB计算引擎输出文本的缓冲区 engOpenSingleUse 启动一个非共享的MATLAB计算引擎 engGetVisible 检测MATLAB命令窗口是否可视 engSetVisible 设置MATLAB命令窗口是否可视 * 引擎是matlab最早提供的外部接口技术 matlab编译器不会把所有的M文件转化为C/C++,而是产生一些必要的C/C++接口函数,其余的M程序都放到.ctf文件中 .h中的初始化函数,matlab函数与结束调用函数,3个函数贯穿使用的全过程 * *
文档评论(0)