《编译与接口》PPT课件.ppt
第8章 编译与外部程序接口,本章将着重介绍MATLAB的外部接口,包括:与Word/Excel的混合使用;编译器;应用程序接口。,目录,8.1 与Word/Excel的混合使用 8.2 编 译 器 8.3 应用程序接口 习 题,8.1 与Word/Excel的混合使用,8.1.1 Notebook的使用8.1.2 Excel link的使用,在Word环境中可以使用MATLAB的资源。同时MATLAB也可以与Excel混合使用。,8.1.1 Notebook的使用,1在Word中执行代码的基本过程 2Notebook使用中应该注意的问题,安装Notebook(又称M-book)时,计算机中必须已经安装Word和MATLAB,其具体步骤如下。,1在Word中执行代码的基本过程,Notebook采用输入细胞(Input Cell)来定义MATLAB的代码,具体操作步骤如下。采用文本格式输入代码,末尾不要加回车 和空格。,通过Notebook菜单中的【Define Input Cell】选项定义输入细胞,其中输入细胞 都显示为黑方括号包括绿色字符的形式。通过Notebook菜单中的【Evaluate Cell】选项或者按Ctrl+Enter键,运行 输入细胞内的代码,并得到黑方括号包 括蓝色字符形式的输出细胞。,2Notebook使用中应该注意的问题。,M-book文档中的MATLAB代码必须在英 文状态下输入。带鼠标操作交互的代码最好不在M-book 文档中运行。,在运行M-book文档时,最好不运行其他 程序与任务,以免影响M-book文档中程 序的正确执行。采用以下方法解决代码执行中出现的异常 情况:代码以命令clear开始;重新启动 计算机后,再执行M-book文档中的程 序;将M-book文档的代码拷贝到M文 件,再到MATLAB的命令窗口执行。,M-book文档的代码运行速度要比在 MATLAB命令窗口中执行慢很多。当编辑科技论文或其他文档时,最后可将 细胞转换为普通文本。,可使用Notebook菜单中的【Bring MATLAB to Font】选项或者按组合键Alt M把MATLAB的命令窗口调到前台。可使用Notebook菜单中的【Toogle Graph Output for Cell】选项控制是否 显示输入细胞或输出细胞的输出图形。,8.1.2 Excel link的使用,1Excel link的安装 2Excel link的启动 3Excel link的终止 4Excel link使用时需 要注意的几个问题,Excel link是在Microsoft Windows环境 下实现Microsoft Excel和MATLAB进行 交互的插件。使用Excel link时,不必脱离Excel环 境。Excel link提供11条功能函数来实现数据 的链接和操作。,1Excel link的安装,系统需要在Windows环境下先安装 Excel,然后再安装MATLAB和Excel link。Excel link随安装MATLAB时安装的,即 在MATLAB安装组件中选中Excel link。,需要在Excel中设置,具体步骤如下。启动Microsoft Excel,单击工具菜单(Tools),执行【加载宏】命令,得到 如下图所示的结果。,在打开的【加载宏】对话框中单击【浏览】按 钮,选择MATLAB安装目录下的 toolboxexlink子目录里的excllink.xla文件,然后单击【确定】按钮,如下图所示。,返回【加载宏】窗口,此时已经选中了【Excel link】选项,如下图所示。单击【确定】按钮后,Excel link插件即可加 载MATLAB,并可以看到其运行窗口。,2Excel link的启动,按照上面的设置,每次启动Excel时Excel link和MATLAB将自动运行。,如果不希望Excel link和MATLAB自动运行,可以通过在Excel数据表单元中输入“=MLAutoStart(”no“)”即可改变设置,如下图所示。,同时可以从Excel环境中手动启动Excel link和MATLAB。首先,在Tools菜单中选择【宏】选项,如下图所示;,在如下图所示的对话框中输入“MATLABinit”,单击【执行】按钮后即可启动Excel link,并同时启动MATLAB。,3Excel link的终止,当终止Excel的时候,Excel link和MATLAB会被同时终止。,如果需要在Excel环境中终止MATLAB和 Excel link的运行,则在工作表单元中输 入“=MLClose()”即可,如下图所示。当 需要重新启动Excel link和MATLAB时,可以使用MATLABinit命令。,4Excel link使用时需要注意的几个问题,Excel link函数名对字母的大小写不作区 分,而MATLAB函数名是区分大小写的。Excel工作表等式通常以“”或“”作为起 始标记。在大多数Excel link函数中有两种定义变 量的方式,即直接定义和间接定义。,Excel link函数执行过程中其所在数据单 元将一直显示其函数内容,函数执行完毕 后,数据单元将被赋值为0。建议设置Excel【工具】工具菜单里【选 项】的【编辑】页中【按Enter键后移 动】选项为【向下】,以保证输入完毕且 经确认后再改变当前工作单元。,8.2 编 译 器,8.2.1 编译器概述 8.2.2 编译器的安装和配置 8.2.3 编译器的使用,MATLAB编译器是指将M文件作为其输入,同时生成独立的可执行文件或相关软件组件的程序,它可以由命令mcc调出。,8.2.1 编译器概述,MATLAB编译器4.0版本采用了MATLAB Component Runtime(MCR)技术。MCR提供了对MATLAB语言的完全支 持。MATLAB编译器采用了Component Technology File(CTF)存档来组织配 置文件包。,所有的M文件均采用了高级加密标准(AES)进行了密钥为1024位的加密,保存为CTF格式。每一个由MATLAB编译器生成的应用程序 或者共享库均有一个与之相对应的CTF存 档。,MATLAB编译器自动生成独立文件或软件组件。为了生成独立运行的MATLAB应用程序,只需要用来构成应用程序的M文件,然后编译器将会自动执行以下操作。依赖性分析;代码生成;存档生成;编译;链接。,8.2.2 编译器的安装和配置,1安装ANSI C/C+编译器 2安装MATLAB编译器 3配置编译器 4安装MCR,1安装ANSI C/C+编译器,2安装MATLAB编译器,MATLAB编译器的安装过程包含在安装MATLAB之中,当选择Typical的安装模式时,MATLAB Compiler会被自动选为MATLAB的安装组件。,当选择Custom安装模式时,在默认情况下,MATLAB Compiler选项是被选中的,如下图所示。,3配置编译器,下面将介绍如何配置C或C+编译器,使其可以与MATLAB编译器一起进行工作。,4安装MCR,将MATLAB安装路径中的 toolboxcompilerdeploywin32子目 录下的文件MCRInstaller.exe拷贝到其 他路径;双击进行安装,直到提示安装结束。,8.2.3 编译器的使用,1编译指令mcc 2创建独立执行程序,1编译指令mcc,不管是生成独立执行程序,还是C共享库以及软件组件,只要源码是M文件都可以借助编译命令mcc实现。,2创建独立执行程序,下面以3个例子说明不同类型的编译过程。,打开DOS窗口,将路径变更为exm2.exe所在目录,并运行exm2.exe,运行结果如下图所示。,8.3 应用程序接口,8.3.1 创建C语言MEX文件 8.3.2 Java接口 8.3.3 DDE技术 8.3.4 ActiveX技术,MATLAB提供应用程序接口(Application Program Interface,API)来实现与其他外部程序的沟通。,8.3.1 创建C语言MEX文件,1MEX文件简介 2编写MEX文件源程序,1MEX文件简介,MEX是MATLAB和Executable两个单词 的缩写。MEX文件一般使用C或者Fortran语言编 写,通过编译生成的目标文件能够被 MATLAB调用执行。,MEX文件主要应用于已存在较大规模的C 或者Fortran程序。矩阵是MATLAB唯一能处理的对象,在C 语言中矩阵用结构体mxArray来定义。,2编写MEX文件源程序,编写MEX文件源程序时,要用到两类API库函数:mx-库函数,用于在C语言中创建、访 问、操作和删除结构体mxArray;mex-库函数,用于与MATLAB环境进行 交互。,8.3.2 Java接口,Java语言是一种面向对象的高级编程语言。在MATLAB中可以直接调用Java的应用程序。,利用MATLAB的Java接口可以完成下列工作:调用Java API类和包;调用第三方Java类;在MATLAB环境下创建Java对象;通过Java语法或者MATLAB语法使用Java对象的方法;在Java对象和MATLAB之间交互数据。,在MATLAB中创建Java对象有两种方法:直接用Java类 用函数javaObject()创建。,8.3.3 DDE技术,1DDE的一般性说明 2DDE中的MATLAB服务器 3DDE中的MATLAB客户,动态数据交换(Dynamic Data Exchange,DDE)允许各Windows应用程序间交换数据的通信机制。Windows平台上的MATLAB作为一个应用程序,具有借助DDE与其他应用程序通信的功能。,1DDE的一般性说明,应用程序可以借助DDE通话实现彼此间的通信。请求建立对话的应用程序称为客户(Client)响应对话请求的应用程序被称为服务器(Server)。,当客户应用程序创建DDE对话时,必须识别被呼叫服务器的两个DDE参数:服务名(Service name),即被请求对 话的应用程序名;话题(Topic),即对话主题。由这两个参数构成了区分不同对话的惟一标识。,2DDE中的MATLAB服务器,客户可以采用不同方法访问作为服务器的MATLAB。假如客户应用程序能够提供管理DDE对话 的函数或宏,则应该充分利用它们;假如客户应用程序是自行编制的,则可利 用MATLAB引擎库或直接利用DDE。,MATLAB用作服务器时的工作原理如下图所示。,当MATLAB作为DDE服务器使用时,所能选用的具体名称和它们间的层次关系如下图所示。,3DDE中的MATLAB客户,当MATLAB以客户身份建立DDE通信时,其工作原理如下图所示。,在Excel开启的前提下,运行结果如以下两图所示。,8.3.4 ActiveX技术,1ActiveX技术的一般性说明 2自动化客户 3自动化服务器,1ActiveX技术的一般性说明,ActiveX是一种基于Microsoft Windows 操作系统的组件集成协议,是各种面向对 象技术的集合。每个ActiveX都支持一个或多个赋名的界 面,而界面是一组逻辑相关方法、属性和 事件的组合。,MATLAB支持两种ActiveX技术,即 ActiveX控件和ActiveX自动化。MATLAB自动化客户的功能仅是MATLAB ActiveX控件功能的子集。,2自动化客户,若需要MATLAB通过ActiveX自动化客户支持调用其他ActiveX组件,则须先查阅该ActiveX组建的相关文件,从中得到该组件的名字、该组件所采用的接口名、方法、属性和事件等。,指令actcontrol用于创建ActiveX自动化 客户支持。该指令运行后将引出指定组件名的对象默 认界面。通过该对象属性的获取和设置、方法的激 活,可以改变该对象的界面和行为。,在第21行代码执行前产生如下图所示的Excel界面。,3自动化服务器,通过MATLAB ActiveX自动化服务器,可以在指定应用程序中执行MATLAB命令,并可以与MATLAB的工作空间交换数据。,习 题,