- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2_2_MATLAB编程入门
第二章 MATLAB程序设计(2)MATLAB混合编程 为什么要引入MATLAB混合编程 有效的解决方案 MATLAB作为当今世界上应用最为广泛的数学软件, 具有非常强大的数值计算、数据分析处理、系统分析、图形显示甚至符号运算的功能,并且其工具箱提供了诸多解决复杂问题和专业问题的算法,大大提高了工程分析计算等工作的效率,但是注意到其*.m文件只能在MATLAB平台上使用,这样MATLAB已有的复杂算法应用到高级语言开发环境下时就带来了困难,例如VC++是当前Windows 下的主要编程工具之一,用VC++开发的系统具有容易维护升级、界面友好、代码效率高、执行速度快等一系列优点并直接与系统及底层硬件交换数据,因此已成为目前软件开发中广泛采用的主要工具之一。因此,如何将MATLAB编程进行扩展,与VC++进行有效的混合编程受到了广大工程科研人员的关注。解决这个问题,不仅能更好地发挥MATLAB强大的计算优势,还能提高软件开发的效率和质量,尤其涉及到复杂的数学算法、图形处理时这种需求就更为迫切。 MATLAB提供了强大灵活的接口技术,用户可以在MATLAB中调用其他高级语言进行程序编写,也可以在其他高级语言中调用MATLAB的数值计算和图形功能,灵活的使用MATLAB的接口技术,可以帮助用户有针对性的获得问题的有效解决方案。 在此,我们以MATLAB和VC++的混合编程为例,介绍MATLAB的接口技术 MATLAB与VC++的接口 直接利用MATLAB引擎技术调用MATLAB函数 MATLAB的引擎库提供一些接口函数,用户可以在自己的程序中以计算引擎方式调用MATLAB的这些接口函数。在这种类型的应用中,应用程序和MATLAB往往运行于各自独立的两个进程,两者通过相关的技术进行通信。 这种方式方式生成的程序只有在安装了将MATLAB程序编译成系统上才能正常运行。即程序不能脱离MATLAB环境。需要MATLAB作为后台。 调用由MATLAB文件编译生成的库函数 MATLAB编译器是一个运行于MATLAB环境的独立工具。MATLAB编译器的主要功能是把M程序转变成C/C++代码,然后再调用外部C/C++编译器把产生的源代码编译,连接成用户指定的格式。 MATLAB编译器产生的可执行文件或者组件在运行时只需要一个简化的组件形式运行环境,而并不需要MATLAB本身。这个组建形式的MATLAB运行环境可以很方便地从MATLAB派生并且免费发布。这使得MATLAB的应用不再只是局限于程序的原型设计和开发。利用MATLAB编译器,完全能够在MATLAB环境快速开发可以直接交付用户使用的应用程序,从而极大地缩短应用程序开发周期。 调用MATLAB引擎 接口方式 MATLAB引擎采用客户机/服务器的计算模式,通过windows的ActiveX通道和MATLAB进行结合。提供一组MATLAB API函数用以支持C/C++、Fortran等语言,利用这些接口函数,用户可以在其它编程环境中实现对MATLAB的控制,其主要功能有:打开/关闭一个MATLAB对话、向MATLAB发送命令字符串、实现VC++和MATLAB的数据交互等。外部语言可以将MATLAB当作一个强大的可编程函数库来开发应用系统,程序的数据处理等功能有选择性的交由MATLAB完成,可以达到提高开发效率的目的。 在VC++中,将C语言或C++语言的程序作为前端客户机,它向MATLAB引擎传递命令和数据信息,通过调用MATLAB引擎在后台与MATLAB服务器建立连接,实现动态通信。 与其它各种接口相比,引擎所提供的MATLAB功能支持是最全面的。通过引擎方式,应用程序会打开一个新的MATLAB进程,可以控制它完成任何计算和绘图操作。但这种混合编程的方法不能脱离MATLAB环境,在一定程度上影响了程序的通用性。 调用MATLAB引擎 实现的功能 VC++可以利用engOpen、engClose接口函数实现MATLAB引擎的打开和关闭,通过接口函数engGetVariable、engPutVariable从引擎得到或者发送一个MATLAB数组,通过函数engEvalString使引擎执行按照MATLAB语法书写的指令。 下面是结合实例来讲解如何使用Visual Studio来调用MATLAB引擎实现两者的混合编程 操作环境为Microsoft Visual Studio 2010 ultimate和MATLAB R2009a。 编程环境设置 注册MATLAB控件库 引擎方式是将MATLAB以ActiveX控件方式启动。在MATLAB安装时会自动执行MATLAB /regserver将自己在系统的控件库中注册。如果因为特殊原因无法打开MATLAB引擎,可执行上述命令,重新注册 创建要调
文档评论(0)