张轩VisualC与Matlab的联合使用.pptVIP

  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文档。上传文档
查看更多
张轩VisualC与Matlab的联合使用

Visual C++与Matlab的 联合使用 北京工业大学机电学院 张轩 为什么需要联合使用 遇到这样的情况您怎么办? 使用Visual C++开发应用程序时需要: 进行矩阵求和、相乘、分解等运算; 求特征值和特征向量; 解偏微分方程; 进行线性规划或二次规划计算; …… 关于Matlab 基于矩阵运算的专业科学计算程序包; 大量高效、稳定的数学函数和算法; 包罗万象的专业数学工具箱; 简单易用的M语言; 直观快捷的图形处理; …… Visual C++与Matlab的互补性 Matlab 的缺点: 不能灵活开发Windows应用程序; 只能在Matlab运行环境中执行; 运算速度较慢; Visual C++与Matlab的互补性 怎样联合使用 方法1:在VC程序中使用Matlab C/C++数学函数库。 方法2:将Matlab的M文件翻译成C/C++语言,加入到VC程序中使用。 方法3:将Matlab的M文件编译成可执行文件,在VC程序中调用。 方法4:在VC程序中调用Matlab COM 对象。 此技术较为艰深,普通用户不易掌握。 方法5:在VC程序中调用Matlab计算引擎。此方法则需要Matlab程序的支持。 前三种情况较为实用。 本文仅对前三种情况进行介绍。 方法1、2、3 的核心内容 动态链接库 Matlab编译器MCC 动态链接库的概念 动态链接库是一可执行文件,其内部包含可被其它应用程序调用的函数。 动态链接库本身并不属于调用它的应用程序,而只是为其提供一个函数接口。 应用程序对库的链接过程是在程序运行中实现的,而非编译阶段。 动态链接库的构成和使用 一个动态链接库一般包括三部分内容 动态链接库文件(后缀为dll); 动态链接库输入文件(后缀为lib); 头文件(后缀为h/hpp)。 Matlab编译器的功能 将M文件翻译成C/C++文件; 将M文件转化为C/C++文件并生成动态链接库或独立可执行文件; 将M文件转化为C文件并生成Mex文件; 将M文件转化为C文件并生成Simulink S函数。 …… Matlab编译器的使用格式 mcc [-options] fun [fun2 ...] [mexfile1 ...] [mlibfile1 ...] options:编译器参数; fun [fun2…]:要转换的M文件; [mexfile1 ...]:要链接的Mex文件; [mlibfile1 ...]:要链接的动态链接库输入文件。 Matlab C/C++数学函数库 Matlab C/C++数学函数库的概念 是一系列动态链接库的集合; 包含400多个C/C++语言版本的Matlab数学函数; Matlab C/C++数学函数库的组成: 使用Matlab C/C++数学函数库 在Matlab中设置; 在Visual Studio中设置; 在应用程序中设置。 Matlab M文件的翻译 使用MCC可以将M文件转换为C/C++文件。 例如: 将myfun.m翻译成C代码: mcc -t -L C myfun 将myfun.m翻译成C++代码: mcc -t -L Cpp myfun 翻译后的函数 M函数fun对应的C/C++函数: InitializeModule_fun —— 模块初始化函数; TerminateModule_fun —— 模块注销函数; mlfFun(在C++中为fun)—— fun的普通函数接口; mlxFun —— fun的feval版本的函数接口; Mfun —— fun的实际执行函数。 根据M函数的类型,可能还会产生以下函数: mlfVFun(在C++中为VFun)—— fun的无返回值版本的函数; mlfNFun(在C++中为Nfun)—— fun的指定输出参数个数版本的函数; 需要注意的事 Mablab编译器只能翻译M函数文件,而不支持M脚本文件; 编译后M文件中的条件语句中的persistent和global将不起作用; 当M文件中使用了对象的引用时,运行时可能会产生内存错误; 如果用户指定的文件中使用了其它M文件,并且在Matlab目录中存在这些文件的同名文件,则编译器自动使用Matlab目录中的文件; …… Matlab M文件的编译 包装函数 针对不同目标文件(独立可执行文件、动态链接库文件和Mex文件)的附加接口函数。 例如:Fun.m Windows控制台程序:main函数; 动态链接库文件:FunInitialize函数和FunTerminate函数; 用W选项来控制。 将myfun.m 翻译为C代码并生成Mex文件: mcc -x myfun 翻译为C代码并生成独立可执行文件: mcc -m myfun 翻译为C++代码并生成独立可执行文件

文档评论(0)

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

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

1亿VIP精品文档

相关文档