MATLAB与FORTRAN接口技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MAT LAB与F ORT RAN接口技术
枣庄学院数学与信息科学系 赵晓艾
[摘 要]介绍了动态链接函数库M EX文件,MAT文件及MAT LAB引擎的调用原理,利用MAT LAB和F ORT RAN接口技术实现F ORTRAN程序计算结果的可视化过程。

[关键词]MAT LAB F ORTRAN AP I
MAT LAB是一种面向科学与工程计算的高级语言,凭借其强大的科学计算与可视化功能,简单易用的开放式可扩展环境,取得了在矩阵代数、数值计算、数字信号处理、动态仿真﹑神经网络控制等领域的广泛应用。

:它语言简洁,使用方便灵活,程序书写形式自由,图形功能强大。

MAT LAB扩充能力强,交互性好,有丰富的库函数,它包含了大量的MAT LAB与C/F ORTRAN语言之间的接口函数,在进行复杂数学运算时可以直接调用,这些接口函数是MAT LAB的一个非常重要的组成部分。

虽然MAT LAB是一个完全独立的编程和数据运算的集成环境,使用它可以方便地完成许多工作,但是,很多时候仅靠MAT LAB环境还是不能很好的完成任务,例如:MAT LAB中程序循环,其它语言编写的算法的移植要重新编写M文件等。

F ORT RAN语言是传统的数值处理语言,处理速度高,编程简便,其强大的数值计算能力和长期积累的大量的科学计算程序库及工程应用软件,始终占据着科学和工程计算领域的重要地位,有很多源代码资源可供使用,但它在图形功能方面有较大的不足。

MAT LAB提供的AP I(App licati on Pr ogra m I nterface)弥补了彼此的不足,它支持MAT LAB与外部数据和程序的交互。

MAT LAB接口包括:在MAT LAB环境中调用其它语言编写的程序和算法,通过M EX文件实现;MAT LAB与其它编程环境的数据交互,通过MAT文件实现;其它编程环境使用MAT LAB的计算绘图功能,通过MAT LAB计算引擎实现。

1MEX文件
1.1M EX文件介绍
M EX文件是由C/F ORTRAN语言编写的,编译后生成MAT LAB动态链接子程序,可MAT LAB中导入和执行,如同MAT LAB的内置函数一样,主要应用有:对已有的C/F ORTRAN 程序,可通过MEX方式在MAT LAB环境中直接调用;对影响MAT LAB执行速度的F OR循环,可以编写相应的C/F ORTRAN 子程序完成相同的功能,并编译成MEX,提高运行速度。

F OR2 TRAN语言MEX文件通常由两部分组成:
(1)入口子程序,是计算子程序与MAT LAB环境之间的接口,用来完成相互之间的调用。

其程序的入口点由函数mexFuncti on定义,入口子程序函数的说明格式如下:
c人口子程序
subr outine mexFuncti on(nlhs,p lhs,nrhs,p rhs)
c参数声明:
integer p lhs(3),p rhs(3)
integer nlhs,nrhs
其中p rhs是指向输入变量的mx A rray类型指针,nrhs是输入变量的个数,p lhs是指向输出变量的mx A rray类型指针,nlhs 是输出变量的个数。

(2)计算子程序,是完全的F ORTRAN语言编程,不涉及到任何的接口内容,这部分程序可以单独编写一个子程序或程序子函数。

M EX文件的使用极为方便,只需在提示符下键入MEX文件名即可,与MAT LAB的内建函数的调用方式完全相同,当执行M EX文件时,MAT LAB系统将首先搜索MAT LAB系统的所有可搜索路径(通过路径浏览器设置),然后载入并执行第一个与用户键入的文件名相匹配的可执行文件。

在MAT LAB中,由于M EX文件的执行优先级高于M文件,所以即使一个文件名同时存在两种类型的可执行文件中,也会先执行MEX文件。

F ORT RAN语言的几个常用MEX函数
:
1.2MEX文件调用的基本原理
MAT LAB和F ORTRAN语言的运算单位不同,MAT LAB以矩阵(mx A rray结构体)为基本数据结构,而在F ORTRAN中,文件是由按顺序排列的记录组成的,而记录是数值或字符的序列,是F ORTRAN程序输入输出的基本单位。

记录有两种格式:格式记录和无格式记录。

格式记录中,数据在文件中的存放是用ASC II码形式;无格式记录中,数据在文件中存放是用二进制代码形式。

由于F ORT RAN和MAT LAB的数据类型不能直接匹配,故需调用MAT LAB的AP I函数来完成二者的数据转换,其基本原理是:MAT LAB将需要传递的mx A rray型数据的内存地址作为一个整型数值传递给F ORT RAN程序,然后在F OR2 T RAN中,AP I提供的访问函数(access r outiness)使用此整数值来访问mx A rray的内容,并将此值作为内存地址,读取相应内容。

传统的F ORTRAN77不支持指针变量,因此必须借助MAT LAB的AP I函数;在F ORT RAN90中,可以通过%val直接使用数据而无须调用子例行程序mxCopyPtrT oReal8和mxCopy2 Real8T oPtr。

1.3MEX文件的编译
要编译生成的MEX文件,必须确认已经安装了MAT LAB 应用接口组件及其相应工具,并且要有合适的F ORTRAN语言编译器,在W indows平台下,所使用的编译器必须支持32位的W indows动态链接库(DLL)。

MAT LAB的AP I支持许多编译器,并针对不同的编译器提供不同的选项文件,在生成M EX文件之前必须为编译器配置合适的选项文件。

在MAT LAB命令窗口中键入命令:mex–setup,按提示逐步完成,配置完后,使用命令:mex–f(选项文件名)(源文件名)对源文件进行编译。

2MAT LAB与F ORT RAN数据共享
MAT LAB提供了多种数据输入输出方式,用户可以根据需要灵活选择,MAT LAB与F ORT RAN实现数据共享有以下几种方式:
2.1AS C II码方式
AS C II是计算机中用得最广泛的字符集及其编码,ASC II码的数据文件中的数据形式必须是一个矩阵,要求数据文件每一行的数据个数必须相同,每行数据对应于矩阵的每一行,每行的元素用空格分开。

把F ORT RAN输出数据保存为ASC II码文件形式,在MAT LAB中用:l oad文件名(带扩张名),该语句在MAT LAB工作空间创建一个与文件名(无扩展名)相同的变量,该变量表示的矩阵即是AS C II码文件的数据组成的矩阵。

2.2底层I/O方式

5
8
1

MAT LAB 提供了文件底层操作函数来装入某种特定格式的数据文件,可以f open 和fread 读取F ORT RAN 创建的数据文件。

2.3M EX 动态程序方式
开发MAT LAB 的动态链接MEX 子程序使原有的F OR 2TRAN 程序和MAT LAB 链接在一起。

2.4外部程序转换
开发F ORT RAN 程序将数据文件直接转换成MAT LAB 的MAT 数据文件,再用l oad 命令装入到MAT LAB 系统中。

MAT 文件是MAT LAB 系统保存文件的默认文件格式,它把文件存储为二进制格式,这种格式为在不同平台或不同应用程序间移动MAT LAB 数据提供了一种便利的机制。

一般使用MAT LAB AP I 来完成MAT 文件的读取与存储,常用的函数有
:
3MAT LAB 引擎
3.1MAT LAB 引擎简介
Engine 是指一组MAT LAB 提供的接口函数,通过这些接口函数,用户可以在C /F ORT RAN 的应用程序中实现对MAT LAB 的控制,完成与MAT LAB 引擎的数据交换和命令传递任务。

几个常用的MAT
LAB 引擎的函数:
同时,引擎应用程序还可以使用前面提到的AP I 函数。

3.2引擎调用的基本原理
当F ORTRAN 程序调用某个MAT LAB 函数或命令时,首先通过引擎函数启动MAT LAB 并建立ActiveX 通道,然后把这个函数或命令通过ActiveX 通道传给MAT LAB,由MAT LAB 在后台执行,这可以分成两步来完成:第一步将mx A rray 转换成MAT LAB 可理解的形式。

用mxCreate 来创建一个和要传递的数据类型大小相同的矩阵mx A rray;第二步将矩阵放入MAT 2LAB 工作区中,用程序engPut M atrix 和engEvalString 来完成。

3.3引擎程序的编译
在MAT LAB 下作空间执行mex -setup 选择编译器,假设使用F ORT RAN V6.0,源程序名为filena me .f 的文件编译格式如下:mex -f [MAT LAB 根目录」\bin \df60eng mat op ts .bat filena me .f 。

结论
通过AP I 函数不仅可以在MAT LAB 下以动态链接库的形式调用F ORT RAN 语言编写的子程序,而且可以在F ORTRAN 语言中调用MAT LAB 的大量函数,将MAT LAB 作为一个计算引擎,完成MAT LAB 与外界必要的数据交换,极大地增强了MAT LAB 的灵活性,实现F ORTRAN 程序的计算结果可视化。

参考文献
[1]刘志俭.MAT LAB 应用程序接口用户指南[M ].北京:科学出版社,2000
[2]贺红梅,包军.MAT LAB 与F ORT RAN 程序的接口技术[J ].电力学报,2002,17(2):126-127
[3]飞思科技产品研发中心.MAT LAB 6.5应用接口编程.电子工业出版社,2001:109-113
(上接184页)
当然万兆以太网是刚发展起来的新的技术力量,有它的不足之处,如其标准有待完善,如现标准传输介质只允许采用光纤,而不能采用铜缆。

我们期待其万兆铜缆I EEE 802.3ak 标准的公布。

届时万兆每端口价格就会下降。

万兆交换机价格偏高也是阻碍其发展的因素,目前我国图书馆的经费有限,只有个别经费充足的图书馆有条件从千兆升级到万兆。

结语
随着I EEE802.3ae 标准的批准实施,10GbE 技术已成为当今网络技术发展的热点,10GbE 技术将被广泛地应用于各种骨干网络与存储网络中,这两者都是图书馆网络的核心需求。

随着图书馆资源的不断增加和服务的不断提高,当图书馆带宽成为瓶颈时,万兆以太网的应用能够打破瓶颈,为图书馆提供高带宽、高性能的网络服务,包括组播服务、身份认证以及网络性能保障等多项服务。

能够顺利地开展视频、话音、数字图书馆、多媒体数据,资源共享等各种网络应用。

就像当年百兆升级十兆,千兆升级百兆一样,万兆也将会成为未来图书馆骨干网络的主流。

参考文献
[1]马拉加,景玲,张瑞萍(译者张瑞萍,景玲).信息系统技术.北京:清华大学出版社,2006:55-56
[2]The persistence of Moore ’s la w and s ome s peculati ons a 2bout machine intelligence,2007-01-29htt p://www .zenker .se /Sur p rise /moore .sht m l (Accessed 2007-07-28)
[3]To m Sheldon.Encycl opedia of Net w orking &Telecommu 2nicati A:the Mc Gra w -H ill Companies,I nc 2004:48-51
[4]中国互联网络信息中心,第20次中国互联网络发展状况统计报告,2007-07-18htt p://www .cnnic .cn /index/0E /00/11/index .ht m (访问日:2007-07-28):24页
[5]胡道远.网络技术教程.北京,清华大学出版社,2005:125-126
[6]谢希仁.计算机网络.4版,北京,电子工业出版社,2004:12
[7]中国教育和科研计算机网:高校图书馆解决方案:.ht 2t p://www .edu .cn /gaoxiao _5335/20060919/t20060919_197411.sht m l 2007-05-01
[8]中国电子政务网.暨南大学网络万兆数字化图书馆成功案例:2007-3-2htt p://www .e -gov .org .cn /chenggonganli/wangluojianshe /200703/50854.ht m l .2007-05-03

681—。

相关文档
最新文档