zoukankan      html  css  js  c++  java
  • VC和matlab混合开发学习

    作者:朱金灿

    来源:http://blog.csdn.net/clever101

        

          第一种方式是直接调用Matlab Engine的接口。Matlab Engine 采用Client/Server的方式,通过ActivcX通道和Matlab接口来实现在VC编程环境中直接调用matlab中的指令。调用使用的函数是:engEvalSting。这种方式具体见这篇文章:

    一步步学如何使用VC调用matlab engine编程,相关源码下载见:VC调用matlab示例。这种方式优点是方便,缺点是必须启动Matlab,就是说用户机子上必须装有matlab。

     

            第二种方式是使用Matcom工具。Matcom是mathTools公司推出的一个能将M文件转化成相同功能C++代码的工具。相比Matlab自带的编译器Compiler,用Matcom转化代码要简单和方便得多。但是matcom在很多方面也有限制,比如,对struct等类的支持有缺陷,部分绘图语句无法实现或得不到准确图象,尤其是三维图象。Matcom和VC6.0结合得比较好,和其它的VS平台结合得并不好,如果没有什么特殊原因,建议最好别用matcom了。因为它已经不再升级更新了,社会认知度越来也低,而我在VS2008的使用过程中也发现有不兼容的地方,如离散傅里叶变换fft,fft2是无法使用的,提示内存错误(VC6.0可用)。而且这个软件的核心是Matcom C++库,它是以动它链接库.dll给出的,你无法得知它的实现原理,对编程能力的提升没多大帮助。

     

            在《精通VC与Matlab联合编程(五)》一文中作者提到了VC程序可以直接调用Matlab的C/C++数学函数库。我看了下它的例子,发现我安装的Matlab 7.8.0(R2009a)已经没有这样的例子。从网上找到一篇文章《综述MATLAB与VC的交互编程》介绍了一种方法:matlab可以将全部或部分变量保存为mat文件,matlab提供了C接口来读取mat文件。但这种方法依然不能脱离Matlab环境独立运行。

     

            继续搜索网络,发现要脱离Matlab环境独立运行,还是利用Matlab的两个工具Matlab Compiler(也就是通常所用的mcc命令)和combuilde工具

          Matlab Compiler的作用是将m文件转化成C/C++代码(也就是通常所用的mcc命令),这种源代码需要用C/C++编译器编译连接成独立应用程序,在将m文件转成独立应用程序的过程中生成的C/C++文件,原则上是可以被其它的C/C++代码调用的,编译器可以通过设置mcc命令的选项,将m文件编译成动态链接库文件、C/C++文件、可执行文件等一系列文件。到matlab R21.1为止,Matlab Compilerm程序转换成C/C++代码功能有很多限制: 

    不能转换脚本m文件,只能转换m函数; 

    不能使用matlab对象; 

    不能用input或者eval操作matlab空间变量; 

    不能动态地命名变量,然后用load或者save命令来操作; 

    不能处理具有嵌套调用其他m文件的m文件; 

    不能使用MATLAB内联函数; 

     

             combuilder就是把用matlab编写的程序做成com组件,供其他语言调用。该方法实现简单,通用性强,而且几乎可以使用Matlab的任何函数(注意:不支持脚本文件,脚本文件使用时要改为函数文件),因此在程序较大、调用工具箱函数或调用函数较多时推荐使用,这也是Matlab公司(Matlab公司就是Mathworks公司)推荐的使用方法。

     

         

     

     

     

     

     

  • 相关阅读:
    springboot mail+Thymeleaf模板
    jax-rs示例
    java enum的一种写法记录
    lintcode 最大子数组III
    lintcode 单词接龙II
    idea springboot热部署无效问题
    java8 Optional正确使用姿势
    Spring根据包名获取包路径下的所有类
    无状态shiro认证组件(禁用默认session)
    获取资源文件工具类
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470371.html
Copyright © 2011-2022 走看看