- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MATCOM与COM的VC与MATLAB混合编程基本步骤
基于MATCOM与COM的VC与MATLAB混合编程基本和步骤
一、几种常用的混编方法:
1.通过Matlab Engine方式 Matlab Engine是指一组Matlab提供的接口函数,支持C语言, Matlab Engine采用C/S(客户机/服务器)模式,Matlab作为后台服务器,而C程序作为前台客户机,通过Windows的动态控件与服务器通信,向Matlab Engine传递命令和数据信息,从Matlab Engine接受数据信息。用户可以在前台应用程序中调用这些接口函数,实现对Matlab Engine的控制。采用这种方法几乎能利用Matlab全部功能,但是需要在机器上安装Matlab软件,而且执行效率低,因此在实际应用中不采用这种方法,在软件开发中也不可行.
2.直接调用Matlab的C/C++数学函数库 Matlab中提供了可以供C/C++语言调用的C/C++数学函数库,其中包含了大量用C\C++语言重新编写的Matlab数学函数,这些函数涉及到线形代数、数值分析、傅立叶变换、多项式计算、解微分方程等,并且函数库中提供了大量各种矩阵操作函数,在VC中可以直接使用这些函数,通过这些函数可以在VC中方便的实现在Matlab中矩阵运算功能。可以看出用这种方法可以很灵活的调用Matlab来编写应用程序,但要求读者对C\C++语言比较熟悉,可以看出使用这种方法调用Matlab的工具箱函数有很大困难。适合对C\C++语言比较熟悉的用户使用.
3.用Matlab自带的Matlab Compiler Matlab Compiler的作用是将m文件转化成C/C++代码(也就是通常所用的mcc命令),这种源代码需要用C/C++编译器编译连接成独立应用程序,在将m文件转成独立应用程序的过程中生成的C/C++文件,原则上是可以被其它的C/C++代码调用的,编译器可以通过设置mcc命令的选项,将m文件编译成动态链接库文件、C/C++文件、可执行文件等一系列文件。到matlab R21.1为止,Matlab Compiler的m程序转换成C/C++代码功能有很多限制:
(1)不能转换脚本m文件,只能转换m函数;
(2)不能使用matlab对象;
(3)不能用input或者eval操作matlab空间变量;
(4)不能动态地命名变量,然后用load或者save命令来操作;
(5)不能处理具有嵌套调用其他m文件的m文件;
(6)不能使用MATLAB内联函数;
4.使用matcom工具。 这是个第三方控件,很小(8M多),原本属于mathtool公司,后来被Mathworks公司合并了,使用该工具可以将m脚本文件和m函数转化成相同功能的C\C++文件,相比其它方法使用matcom具有如下优点:
(1)转换过程简单(由matcom工具自动实现),容易实现;
(2)可以方便的生成动态链接库文件(dll)和可执行文件(exe);
(3)不仅可以转换独立的脚本文件,也可以转换嵌套脚本文件;
(4)设置环境后,可以使用Matlab的工具箱函数;
但matcom也有以下不足:
(1)对struct等类的支持有缺陷,对class数据类型;
(2)部分绘图语句无法实现或得不到准确图象,尤其是三维图象;
因此在不涉及到三维做图以及m文件不大的情况下推荐使用。5.使用matlab的combuilde工具 COM是component object module的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准,就可以实现调用它。matlab6.5新推出来的combuilder就是把用matlab编写的程序做成com组件,供其他语言调用。该方法实现简单,通用性强,而且几乎可以使用Matlab的任何函数(注意:不支持脚本文件,脚本文件使用时要改为函数文件),因此在程序较大、调用工具箱函数或调用函数较多时推荐使用,这也是Matlab公司(Matlab公司就是Mathworks公司)推荐的使用方法。
以上几种方法可以单独使用,也可以混合使用。
二、基于matcom的VC与MATLAB编程示例
Matcom是Mideva的内核,Mideva是MathTools推出的一种MATLAB编译开发软件平台,由于MathTools公司已被MathWorks收购,故Mideva也不再进行开发,其版本目前为4.5版,可在/source/2335133进行下载,下载完后安装过程与普通windows下软件安装无异,注意的是,其license选择后一部分.
下面通过一个简单的例子进行演示.
1.首先在开始菜单中打开MIDEVA,选择File-New,然后编写如下所示的MATLAB代码(注意所编写的代码必须能在MATLAB中通过),
原创力文档


文档评论(0)