zoukankan      html  css  js  c++  java
  • MATLAB接口简介

    摘自《MATLAB与外部程序接口编程》一书 @http://www.cmpbook.com/stackroom.php?id=18181#

      MATLAB实现了与众多外部程序和设备的借口:
      通过MEX文件的建立,MATLAB能够调用C、C++、FORTRAN等程序设计语言的子程序;通过使用MATLAB引擎,可在C、C++、FORTRAN程序代码中直接调用MATLAB中的函数与命令;通过MATLAB C/C++数学函数库直接实现C/C++与MATLAB的混合编程,并建立可独立运行程序;通过MATLAB提供的串口借口,可以实现从外围设备(如MODEM)直接输入数据到MATLAB工作空间,再利用MATLAB进行处理。

    1. MEX文件

      MEX文件是MATLAB一类外部程序调用接口,可以在MATLAB中像调用MATLAB内建函数一样调用C、C++、FORTRAN等语言编写的子程序,而无需将它们重新编写为MATLAB的M文件,从而使资源得到充分利用。MEX文件有以下一些用处:

    • 对于已存在的C、C++、FORTRAN程序,只需编写接口,就可在MATLAB中调用,而不必重写M文件。
    • 对于那些在MATLAB中执行效率不高的语句(如循环体),可以把它们放在 C、C++、FORTRAN中编写并编译,从而提高执行效率。

    2. MATLAB引擎

      如果说mex文件是为了在MATLAB中调用c/c++和fortran编写的子程序,那么MATLAB引擎既是为了在c/c++和fortran程序中能够调用MATLAB。MATLAB计算引擎是一组允许在别的应用程序中与MATLAB交互的函数库和程序库。在调用的过程中,MATLAB引擎函数库在后台工作,MATLAB通过它与别的应用程序进行通信。通过MATLAB计算引擎可以完成以下功能:

    • 调用一个数学函数或子程序来处理数据,如在用户程序中求阵列转置或计算一个快速傅里叶变换等,MATLAB就是一个强有力、编程灵活的数学子函数库。
    • 建立一个具有特殊用途的完整系统,如雷达图像分析或进行气象色谱分析等,可以使用c等高级语言来编写用户界面,而后台采用MATLAB作为计算引擎,从而达到缩短开发周期,减少开发困难的目的。

    3. MATLAB C/C++ 数学函数库(matlab library)

      matlab 6.x中不仅包含了与c的接口,而且也包含了与c++的接口,因此完全可以采用面向对象编程的方式来编写程序。同matlab与c的接口一样,可以用 c++语言来编写mex文件,也可以调用matlab c/c++数学函数库,并编译生成可独立运行程序。matlab c/c++数学函数库包含了大量的内建数学函数以及在matlab中被声明为m文件的数学函数。
      MathWorks公司提供的matlab c/c++数学函数一方面可以使matlab程序员能够利用已有的编写m函数的经验,花费很小的代价,利用该数学函数库来编写类似于matlab m文件的代码,改代码编译后会有更块的运行速度,且能够独立matlab解释器而运行。另一方面,c++程序员需要一种方便、快捷的矩阵数学含糊苏。对于 c++程序员来说,该数学函数库提供了一个自然而又牢固的编程接口、大量的功能强大的矩阵计算和处理函数,可以使c++程序员方便地应用matlab提供 的矩阵运算和处理能力,从而大大提高程序的执行效率。此外,还对程序员隐蔽了大量便车个细节,可以使程序员用一种简单直接的语法去编程,而无需考虑调用函 数的实现过程。

    4. MATLAB编译器(Compiler)

      matlab编译器(Compiler)是matlab环境下的编译工具,他能将m文件转化为c或c++等不同类型的源代码,并在此基础之上根据需要生成 mex文件(.dll文件)、可独立运行的应用程序(.exe文件),从而大大提高代码的执行效率。尤其是可独立运行的应用程序文件,不需要matlab 环境支持,甚至没有安装matlab也能运行。与matlab engine、mex文件相比,他们大大扩展了程序的应用范围。同时,编译器对m文件编译后,运行速度提高了约33%,另一方面隐藏了程序算法,提高了保 密性。
      使用matlab编译器,也可以将c/c++源代码编译成可独立运行的应用程序,在这些c/c++源代码中,可以使用matlab提供的接口函数轻松的利用matlab的矩阵运算功能、作图功能来维用户服务。
      matlab编译器以m文件作为输入,产生c/c++源代码或p-码作为输出。matlab编译器能产生以下这些源代码:

    • 用于建立mex-文件的c源代码
    • 和其他模块结合建立可独立运行程序的c或c++源代码
    • 产生用于simulink的c代码的s-函数
    • 生成c共享库(在microsoft window 95/98/200/NT上即为动态链接库dll)和c++的静态链接库(它们能用在没有matlab的系统中,但是需要matlab c/c++数学函数库的支持)。

    5. 串口接口

      在MATLAB中,用户可以通过计算机的串口接口来和外围设备(如MODEM,示波器,打印机等)进行通信,甚至可以把计算机作为中介在两台外围设备之间进行通信。

  • 相关阅读:
    spring security几大核心组件
    什么是CSRF攻击?如何避免?
    MyBatis+Oracle实现主键自增长的几种常用方式
    fastjson在将Map<Integer, String>转换成JSON字符串时,出现中文乱码问题
    Layui我提交表单时,table.reload(),表格会请求2次,是为什么?
    Jquery+ajax模板
    HttpServletRequest和ServletRequest的区别
    java技术基础
    mysql数据库基础
    linux基础03
  • 原文地址:https://www.cnblogs.com/emituofo/p/2241668.html
Copyright © 2011-2022 走看看