第20章 应用程序接口教学教材

上传人:yuzo****123 文档编号:139595471 上传时间:2020-07-22 格式:PPT 页数:18 大小:783KB
返回 下载 相关 举报
第20章 应用程序接口教学教材_第1页
第1页 / 共18页
第20章 应用程序接口教学教材_第2页
第2页 / 共18页
第20章 应用程序接口教学教材_第3页
第3页 / 共18页
第20章 应用程序接口教学教材_第4页
第4页 / 共18页
第20章 应用程序接口教学教材_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《第20章 应用程序接口教学教材》由会员分享,可在线阅读,更多相关《第20章 应用程序接口教学教材(18页珍藏版)》请在金锄头文库上搜索。

1、第20章 应用程序接口,作为一款优秀的工程计算软件,MATLAB不仅拥有强大的功能和友好的界面支持,还具有很好的开放性、可扩展性,主要表现在:丰富的工具箱(Toolbox)资源可以适应各学科、各领域的需要,并且用户可以创建自己的工具箱;广泛的应用程序接口(API),能够与外部应用程序实现 “无缝”结合等。 本章针对MATLAB的C、FORTRN应用程序接口,主要介绍以下几方面内容: C/FORTRAN语言中的MATLAB数据结构mxArray; MATLAB利用MEX文件调用C/FORTRAN函数; C/FORTRAN通过MATLAB引擎(Engine)调用MATLAB函数; 创建能够读写MA

2、T文件的C程序,实现C与MATLAB的数据通信。,20.1 mxArray数据结构,数组是MATLAB程序基本的数据组织形式,也是大部分MATLAB运算的基本运算单位。MATLAB中数组与C/FORTRAN中数组的存储方式是不同的,而且MATLAB和C/FORTRAN对基本数据类型,如双精度类型浮点数、整数类型、字符类型等的定义也是不同的。为了能够在C中表示MATLAB数据结构,MATLAB提供了一种特殊的C语言结构mxArray。本节首先简要介绍MATLAB和C/FORTRAN中数组存储方式的不同,然后详细讨论mxArray数据结构及相关的操作函数mx函数。,20.1.1 MATLAB和C/

3、FORTRAN中的数组,数组是MATLAB数据组织的基本形式,这里首先要澄清两个概念,即数据类型和数据结构。MATLAB的数据类型,诸如整型、浮点型、逻辑型等都是数值类型;另外还有字符、字符串、对象等非数值类型。数据结构是指数据元素的组织方式,基本的有数组,另外还有元胞、构架等复杂数据结构,每个数据元素都有对应的数据类型。 MATLAB按列主序组织数组中的数据元素,例如对一个3阶魔术矩阵A,在MATLAB命令窗口输入以下代码。 a=magic(3) 运行结果如下。 a = 8 1 6 3 5 7 4 9 2,20.1.2 mxArray,mxArray是一种C语言结构体,该结构体的定义在Mat

4、rix.h中,下面列出了mxArray定义相关的代码: mxArray结构体由很多字段组成,这些字段保存了MATLAB数据的所有信息: 数据类型; 数组维数; 数组大小,行数、列数; 数据主体; 如果是数值对象,则保存数据是实数还是复数; 如果是稀疏矩阵,则保存矩阵中非零元素的个数和索引。,20.2 C/FORTRAN MEX,C/FORTRAN语言应用于工程、科学等领域具有较长的历史,积累了大量可用的代码,通过MEX文件,可以直接将这些已有的C/FORTRAN代码集成到MATLAB应用中,而且能够弥补MATLAB本身的一些不足,如对计算机低层硬件的操作、网络操作等。 本节首先简要介绍C ME

5、X文件的结构,为了创建C MEX文件,需要对MATLAB 编译器作相关的设置MEX配置,20.2.3和20.2.4分别以示例的形式讨论了C MEX和FORTRAN MEX的创建方法。 注意:MEX是MATLAB Compiler 3等早期MATLAB编译器的功能,MATLAB 7.0的编译器(MATLAB Compiler 4)已不能支持MEX文件。,20.2.1 MEX文件简介,MEX即为MATLAB和Executable的缩写,一般地,MEX文件由C语言或FORTRAN语言开发,经过编译后可以被MATLAB直接调用。在使用上MEX文件与M文件相似,但比M文件具有更高的执行优先级。利用MEX

6、文件,用户可以完成: 在MATLAB直接使用已有的C/FORTRAN代码; 隐藏算法的细节; 利用C语言对低层硬件进行操作,扩展MATLAB的能力。,20.2.2 配置MEX,MEX文件一般由C/FORTRAN语言开发,然后利用MATLAB Compiler将C/FORTRAN源代码编译为MEX文件。为此需要对MATLAB Compiler作相应的配置,配置过程与本书第19章的mbuild配置相似,即是选择合适的C/FORTRAN编译器。在MATLAB命令窗口输入以下指令: mex setup 运行结果如下。 Please choose your compiler for building e

7、xternal interface (MEX) files: Would you like mex to locate installed compilers y/n?,20.2.3 C MEX,前面对MEX文件的结构、MATLAB Compiler的MEX配置进行了详细介绍,本小节通过一个简单的例子说明创建C MEX应用程序的完整过程。,20.2.4 FORTRAN MEX,作为专业的科学计算程序语言,FORTRAN在数值计算方面具有很多优于C语言的性质,所以FOTRAN MEX在MATLAB外部接口编程中也经常遇到。 FORTRAN MEX的创建方法与C MEX非常相似,下面就以上一小节相

8、同的例子介绍FORTRAN MEX的创建过程。,20.3 MATLAB引擎,前面介绍了利用MEX文件在MATALB集成已有的C/FORTRAN代码。尽管MATLAB在科学计算、工程应用领域具有无可比拟的优势,但在复杂用户界面、底层硬件设备操作等方面都有较大的缺陷。一种可行的方案是在C/C+等高级语言中调用MATLAB函数实现后台计算,而用户界面、底层硬件操作由C/C+等完成。为了能够在其他高级语言中调用MATLAB函数,MATLAB提供了多种手段完成,其中计算引擎是一种常用也是最容易实现的一种方法。 本节首先简要介绍了MATLAB引擎应用程序的工作原理和基本结构,第20.3.1节详细讨论了引擎

9、函数(eng函数),最后以一个示例介绍设计MATLAB引擎应用程序的完整过程。,20.3.1 MATLAB引擎简介,MATLAB引擎应用程序的思路与MEX文件相反,MEX文件是在MATLAB环境下调用C/FORTRAN程序,而MATLAB引擎是在C/FORTRAN中调用MATLAB函数。 MATLAB引擎应用程序一般由C/FORTRAN语言开发,运行时利用某种通信机制将计算任务请求提交给后台的MATLAB进程,后台MATLAB进程完成计算任务后将结果返回给C/FORTRAN主程序。在Windows平台下,这种通信机制是利用COM应用接口IEngine完成的,图20.5显示了MATLAB引擎应用

10、程序的工作原理。,20.3.2 MATLAB引擎函数,MATLAB引擎应用程序通过在C/FORTRAN语言中调用一组MATLAB API函数,实现客户应用程序与MATLAB环境的交互,这些函数以eng为前缀。C/FORTRAN通过MATLAB引擎函数打开或关闭MATLAB引擎,从MATLAB中获取数据或向MATLAB写入数据及执行MATLAB命令等操作。,MATLAB引擎函数,20.3.3 MATLAB引擎应用示例,前面介绍了MATLAB引擎应用程序的基本原理、基本结构及引擎函数,下面以一个具体的例子说明创建MATLAB引擎应用程序的完整过程。,20.4 C读写MAT文件,MAT文件是MATL

11、AB用于存储数据的一种特殊二进制文件,利用MATLAB API提供的接口函数(mat函数),C/FORTRAN可以方便地读写MAT文件,从而实现C/FORTRAN程序和MATLAB的数据通信。 本节首先简要介绍MAT文件的结构及其在MATLAB中的应用,20.4.2介绍C读写MAT文件的接口函数(MAT函数),最后给出了一个C读写MAT文件的应用示例。 说明:MATLAB为用户提供了丰富的数据I/O接口,可以读取各种数据文件,如文本文件、二进制文件、图像文件、声音文件、视频文件等,详细内容可以参考本书第18章。,20.4.1 MAT文件,MAT文件是MATLAB提供的用于存储数据的一种特殊二进

12、制文件,MAT文件能够独立于各种平台,为MATLAB提供了跨平台的数据交互能力。 MAT文件可以分为文件头和数据主体两部分,其中文件头包含了一些描述性的信息及相应版本、标识信息,这部分占用128个字节;数据体按照数据类型、数据长度和数据依次保存。 在MATLAB中,用户可以通过save指令将当前工作空间中的指定变量保存至MAT文件中,当用户需要再次使用这些变量时,可以通过load指令方便地将数据导入到当前工作空间中。,20.4.2 MAT函数,利用C读写MAT数据文件,需要调用MATLAB API提供的mat函数,这些函数具有C语言的格式用于MAT数据文件的打开关闭、读写数据等操作: matOpen,用于打开MAT数据文件; matClose,关闭MAT数据文件; matGetVariable,读入MAT数据文件中的变量; matPutVariable,将变量写入到MAT数据文件中。,20.4.3 C读写MAT文件,本小节通过一个简单的示例说明创建C读写MAT文件应用程序的完整过程。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号