- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本文针对Matlab应用程序接口,详细论述了在可视化编程环境中,利用VC++调用Matlab数学图形函数库,编制可以独立运行的应用程序。
经过实践证明,可以在很大程度上提高软件开发效率,增加算法的稳定程度。目前已有一些利用混合编程开发的软件系统:如雷达特性分析、实时预测软件等,在实际中已得到了应用。
一、引言
1984年美国的Mathworks公司推出Matlab,到目前为止,它已发展成为国际上最优秀的科技应用软件之一。其强大的科学计算与可视化功能,简单易用的开放式可扩展环境以及多达30多个面向不同领域而扩展的工具箱(Toolbox)支持,使得Matlab在许多学科领域中成为计算机辅助设计与分析、算法研究和应用开发的基本工具和首选平台。但是由于其编译器采用伪编译的方式,在Matlab中编写的程序无法脱离其工作环境而独立运行。针对这个问题,Mathworks公司为Matlab提供了应用程序接口,允许Matlab和其它应用程序进行数据交换,并且提供了C/C++数学和图形函数库,为在其它程序设计语言调用Matlab高效算法提供了可能。
C++语言是新一代的以面向对象(OOP)概念为根本的高级程序设计语言,它的面向对象的概念更加符合程序员开发软件的思维习惯,类封装性和模块化的构造非常适合软件的移植和维护,使用C++开发有助于提高软件工程的质量。VC++是美国微软公司利用C++的底层机理开发的新一代编译器,与其它一些C++编译器相同,都是以C++语言为编译对象。VC++在编译速度和代码优化方面,是同类产品的佼佼者,并且绝大多数的软件开发包都提供了对它的接口,这是VC++得到程序员认可的主要原因。对于理工科研究生和一些偏重于数值计算的工程技术人员,为了能够较好的在短期之内完成一个兼具友善界面和稳定的计算内核的程序,利用软件接口技术,可以借助于第三方的函数库。 二、Matlab应用程序接口
MATLAB提供的应用程序接口按目的一般来说可以分为以下三种:
利用其它应用程序的优点,例如计算速度快和使用已有算法而制定的接口;
建立MATLAB与其它应用程序间的数据交换;
拓广MATLAB的应用范围和应用手段。开发的相应应用程序为MEX文件、MAT文件和MATLAB引擎应用程序。其中MEX文件作为一种动态链接库文件,必须通过在MATLAB的工作环境内调用才能运行;MAT文件用于数据交换,不能利用MATLAB提供的功能来完成计算任务;MATLAB引擎应用程序是一种可以独立执行的应用程序,但在应用程序执行时,将在后台启动一个MATLAB进程,用于接收从应用程序发送来的指令并执行,然后按照要求返回计算结果。综上,基于MATLAB应用程序接口开发的应用程序并不完善,这种应用程序的运行不能脱离MATLAB环境。
三、VC++调用Matlab数学和图形库
6.1版本的Matlab软件包中提供了C/C++的数学和图形库,通过其编译器支持可以将Matlab中编写的m文件转换成以C/C++代码的文件,而且可以将m文件生成dll库,甚至我们可以直接调用其中的库函数,生成并发布不必依赖Matlab的可执行文件。通过mcc编译器生成C/C++代码,进而可以在VC或者其它编译器生成可独立执行的应用程序。
下面具体讨论如何利用Matlab编译器从m文件生成C/C++代码,并嵌入用户代码,生成运行时不需Matlab支持的应用程序。设matsum.m文件,内容如下:function?sum?=?matbs(?a,?b?)%?sumsum?=?a?+?b用mcc命令转换为C/C++代码,命令行参数如下生成C文件??????mcc?-t?-L?C?matsum.m生成C++文件??????mcc?-t?-L?Cpp?matsum.m生成动态链接库函数??????mcc?-t?-W?lib:sum?-T?link:lib?matsum.m????注意①lib:后跟生成的库文件名不能和原m文件名相同(此处为sum),②此处只能生成C语言方式的动态链接库。该编译命令共生成9个文件,其中sum.lib和sum.dll是可以在C/C++应用程序中调用的动态链接库文件。
?? ?对生成的C++文件进行分析,不难发现编译器根据m文件中的函数,生成一个对应的C++函数:static?mwArray?Mmatsum(int?nargout_,?mwArray?a,?mwArray?b);并分别根据C++和Mex文件的接口方式生成两种形式的接口函数:extern?mwArray?matsum(mwArray?a?=?mwArray::DIN,?mwArray?b?=?mwArray::DIN);和void?mlxMatsum(int?nlhs,?mxArray?*?plh
您可能关注的文档
- 化学现象-认识化学详解.ppt
- 化学选修二、1食物中的营养素详解.ppt
- 化学与美容化妆详解.ppt
- 化学中考模拟试卷及答案 上海教育版介绍.doc
- 化验室安全培训之危化品详解.ppt
- 化验室安全知识详解.ppt
- 化验室灰分的测定及其方法详解.ppt
- 化验室设计 2详解.ppt
- 化验室组织与管理2(第三章)详解.ppt
- 化妆品化学-绪论详解.ppt
- CNAS-CL63-2017 司法鉴定-法庭科学机构能力认可准则在声像资料鉴定领域的应用说明.docx
- 12J7-3 河北《内装修-吊顶》.docx
- 12N2 河北省12系列建筑标准设计图集 燃气(油)供热锅炉房工程.docx
- 内蒙古 12S8 排水工程 DBJ03-22-2014.docx
- 山西省 12S10 12系列建筑标准设计 管道支架、吊架.docx
- 16J601-木门窗标准图集.docx
- 12J8 河北省12系列《 楼梯》.docx
- CNAS-GL37 2015 校准和测量能力(CMC)表示指南.docx
- CNAS-RL02-2016 能力验证规则.docx
- 津02SJ601 PVC塑料门窗标准.docx
文档评论(0)