matlab中的routte,MATLAB与FORTRAN接口技术

MATLAB与FORTRAN接口技术

枣庄学院数学与信息科学系 赵晓艾

[摘 要]介绍了动态链接函数库M EX文件,MAT文件及M ATLAB引擎的调用原理,利用MAT LAB和FORTRAN接口技术实现FORTRAN程序计算结果的可视化过程。

[关键词]M ATLAB FORTRAN AP I

M ATLAB是一种面向科学与工程计算的高级语言,凭借其

强大的科学计算与可视化功能,简单易用的开放式可扩展环

境,取得了在矩阵代数、数值计算、数字信号处理、动态仿真﹑

神经网络控制等领域的广泛应用。:它语言简洁,使用方便灵

活,程序书写形式自由,图形功能强大。M ATLA B扩充能力强,

交互性好,有丰富的库函数,它包含了大量的MATLAB与

C/FORTRAN语言之间的接口函数,在进行复杂数学运算时可

以直接调用,这些接口函数是M ATLAB的一个非常重要的组成

部分。虽然MATLAB是一个完全独立的编程和数据运算的集

成环境,使用它可以方便地完成许多工作,但是,很多时候仅靠

M ATLAB环境还是不能很好的完成任务,例如:M ATLA B中程

序循环,其它语言编写的算法的移植要重新编写M文件等。

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

M ATLAB提供的A P I(Appli cation P rogra m Interface)弥补了彼此的不足,它支持M ATLAB与外部数据和程序的交互。M ATLAB接口包括:在M ATLA B环境中调用其它语言编写的程序和算法,通过M EX文件实现;M ATLAB与其它编程环境的数据交互,通过M AT文件实现;其它编程环境使用MAT LAB的计算绘图功能,通过M ATLA B计算引擎实现。

1M EX文件

1.1M EX文件介绍

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

(1)入口子程序,是计算子程序与M ATLA B环境之间的接口,用来完成相互之间的调用。

其程序的入口点由函数m exF uncti on定义,入口子程序函数的说明格式如下:

c人口子程序

subrouti ne mexF uncti on(nlhs,p l hs,nrhs,prhs)

c参数声明:

integ er p l hs(*),prhs(*)

integ er n l hs,nrhs

其中prhs是指向输入变量的m x A rray类型指针,nrhs是输入变量的个数,plhs是指向输出变量的mxA rray类型指针,n l hs 是输出变量的个数。

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

M EX文件的使用极为方便,只需在提示符下键入M EX文件名即可,与M ATLA B的内建函数的调用方式完全相同,当执行M EX文件时,MA TLAB系统将首先搜索MAT LAB系统的所有可搜索路径(通过路径浏览器设置),然后载入并执行第一个与用户键入的文件名相匹配的可执行文件。在M ATLAB中,由于M EX文件的执行优先级高于M文件,所以即使一个文件名同时存在两种类型的可执行文件中,也会先执行M EX文件。

FORTRAN语言的几个常用M EX函数: 1.2M EX文件调用的基本原理

M ATLA B和FORTRAN语言的运算单位不同,M ATLAB以矩阵(mxA rray结构体)为基本数据结构,而在FORTRAN中,文件是由按顺序排列的记录组成的,而记录是数值或字符的序列,是FORTRAN程序输入输出的基本单位。记录有两种格式:格式记录和无格式记录。格式记录中,数据在文件中的存放是用A SC II码形式;无格式记录中,数据在文件中存放是用二进制代码形式。由于FORTRAN和MAT LAB的数据类型不能直接匹配,故需调用MAT LAB的A PI函数来完成二者的数据转换,其基本原理是:M ATLAB将需要传递的mxA rray型数据的内存地址作为一个整型数值传递给FORTRAN程序,然后在FOR TRAN中,A P I提供的访问函数(access routi ness)使用此整数值来访问mxA rray的内容,并将此值作为内存地址,读取相应内容。

传统的FORTRAN77不支持指针变量,因此必须借助M ATLA B的A P I函数;在FORTRAN90中,可以通过%va l直接使用数据而无须调用子例行程序mxCopyP trT oR ea l8和mxCopy R ea l8T oP tr。

1.3M EX文件的编译

要编译生成的M EX文件,必须确认已经安装了M ATLA B 应用接口组件及其相应工具,并且要有合适的FORTRAN语言编译器,在W i ndows平台下,所使用的编译器必须支持32位的W i ndow s动态链接库(DLL)。

M ATLA B的A P I支持许多编译器,并针对不同的编译器提供不同的选项文件,在生成M EX文件之前必须为编译器配置合适的选项文件。在M ATLAB命令窗口中键入命令:mex–setup,按提示逐步完成,配置完后,使用命令:m ex–f(选项文件名)(源文件名)对源文件进行编译。

2MAT LAB与FORTRAN数据共享

M ATLAB提供了多种数据输入输出方式,用户可以根据需要灵活选择,M ATLAB与FORTRAN实现数据共享有以下几种方式:

2.1A SC II码方式

A SCII是计算机中用得最广泛的字符集及其编码,A SCII码的数据文件中的数据形式必须是一个矩阵,要求数据文件每一行的数据个数必须相同,每行数据对应于矩阵的每一行,每行的元素用空格分开。把FORTRAN输出数据保存为ASC II码文件形式,在M ATLA B中用:l oad文件名(带扩张名),该语句在M ATLA B工作空间创建一个与文件名(无扩展名)相同的变量,该变量表示的矩阵即是A SC II码文件的数据组成的矩阵。

2.2底层I/O方式

185

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值