基于Matlab和VC交互编程ADOLC应用技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Matlab和VC交互编程ADOLC应用技术

基于Matlab和VC交互编程ADOLC应用技术   摘要:ADOL-C能够以正模式和逆模式计算任意阶导数,且能够在VC++环境下实现快速简洁的自动微分运算,但VC++函数库不够丰富,且读取、显示数据不方便,应用到具体的工程领域比较复杂。Matlab包含大量高度集成的函数,适合不同领域的应用,但其执行速度受限。本文提出了一种通过VC++和Matlab交互编程实现了对ADOL-C的调用方法,能够同时发挥两种语言的长处,降低了自动微分技术在不同领域工程应用的难度。   关键词:Matlab VC++ 自动微分 交互编程   中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2011)07-0127-02      ADOL-C是由Dreshen技术大学开发的免费的自动微分系统,能够以正模式和逆模式计算任意阶导数,并可解决优化问题,并支持开发雅可比矩阵的稀疏性,具有广泛的应用前景。ADOL-C在VC++环境下开发,具有代码执行效率高、运算速度快等特点,但VC++的函数库不够丰富、读取、显示数据图形不方便,使ADOL-C在许多场合应用受到限制。 Matlab使用的是解释性语言,执行速度较慢,但其将数值分析、矩阵计算、信号处理和图形显示等众多功能结合在一起,并包含大量高度集成的函数或工具箱可供调用,适合于不同领域的科学研究、工程设计,因此在Matlab环境下通过交互编程调用ADOL-C进行自动微分运算,既能够应用Matlab强大的函数库功能,又具有较快的执行速度,因此具有广阔的应用前景。   1、Matlab应用ADOL-C   Matlab通过应用强大的库函数和工具箱,让开发者便利地生成待进行自动微分运算的数据,然后将该数据交给VC++环境下的ADOL-C处理。其工作流程图1所示:   1.1 VC++与Matlab接口   Matlab 中提供的应用程序接口是一个功能完善的外部程序接口函数库,通过这些函数可以完成与C语言、Fortran语言之间的联合编程。Matlab语言使用单一的对象类型,即Matlab阵列。所有的Matlab变量,包括数、向量、矩阵、字符串、单元阵列、结构体等,都以Matlab阵列的方式进行存储。在C语言中,Matlab阵列声明为数据结构mxArray。基于mxArray 结构体可以处理各种数据类型的多维矩阵,包括实数矩阵、复数矩阵、稀疏矩阵等不同结构的处理。在mxArray 结构体的基础上构建了实现各种数据交互功能的接口操作函数,包括mx-函数、mex-函数、mat-函数和引擎函数等。   1.2 数据类型mxArray的操作   在VC++中,所有和Matlab的数据交互都是通过mxArray来实现的。VC++将Matlab作为计算引擎打开,让让Matlab 在后台完成复杂的矩阵运算和工具箱函数所支持的模块,从而达到简化VC++的程序设计的目的。   在接口函数设计过程中,Matlab 提供了一种MX文件用以被VC++调用。使用mx前缀的API过程可以创建、获取、操作和拆卸mxArray对象。在使用mxArray类型的程序中,首先将Matlab安装目录下\extern\include\lib\win32\microsoft\msvc60中找出两个静态库文件:libeng.def和libmx.def,然后加入VC工程设置的静态库Link中。具体做法是在VC IDE(集成开发环境)中将LIB文件所在的路径加入静态库文件路径Tools-Options-Directories:Library files Directories,并将这两个LIB文件名加入Project- Settings-Link:Object/library modules文本框中。   同时还应包含头文件matrix.h,不过在引擎程序中,一般要将包含头文件engine.h的目录\extern\include加入包含文件的路径Tools-Options-Directories:Include files Directories 中,该文件里面已经包含了matrix.h,因此无需重复包含。   1.3 VC++读写.mat文件   在Matlab系统中执行save命令可以将Workspace中的全部或部分变量存盘为后缀为.mat的文件,其中包含了变量名和变量数据等信息。执行load命令则可完成对mat文件中的变量读取。而mat-函数则提供了在C语言中对mat文件进行创建、读取和修改等操作的方法mat-函数创建或修改过的mat文件可以在Matlab中load读出,从而实现了C语言和Matlab的数据交互。   在VC++中建立mat文件操作程序时,需要有\extern\include目录中的mat

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档