第 25卷 第 1期 桂 林 工 学 院 学 报 Vol. 25 No. 1 2 0 0 5 年 1 月 JOURNAL OF GU IL IN UN IVERSITY OF TECHNOLOGY Jan12005文章编号 : 1006 - 544X (2005) 01 - 0076 - 05 Matlab与 Fo rtran的混合编程及其应用 刘 羽1, 2 (11中国地质大学 地球物理与空间信息学院 , 武汉 430074; 21桂林工学院 电子与计算机系 , 广西 桂林 541004) 摘 要: 介绍和分析了 Matlab与 Fortran混合编程的两种方式 , 即利用 Mex文件和利用 Matlab 引擎; 给出了其具体实现方法 , 并讨论了各自的优缺点和适用情况; 给出了一个物探数据可视化的应用实例. 分析和实验结果表明: 通过 Matlab与 Fortran混合编程 , 不仅可以利用 Mat2lab 强大的图形功能和丰富的工程计算函数 , 还能发挥 Fortran数值运算高效的特点和利用其原 有的大量程序资源 , 从而使编程更为灵活、高效. 如 Fortran程序中有大量交互输入 , 宜采用Matlab引擎混合编程方式; 如 Fortran中要调用的 Matlab函数较多 , 则应考虑采用 Mex文件混合编程. 关键词: Matlab; Fortran; 混合编程; 接口 中图分类号: TP311 文献标识码: A Matlab提供了强大的矩阵运算和图形处理功能以及大量工程计算领域中常用的数值处理函数和高效工具箱 , 不仅编程效率很高 , 适合数据处理及结果的可视化 , 而且在理论和算法上成熟可靠. 但由于是一种解释型语言 , Matlab也有不足之处 , 如执行次数较多的循环特别是多层嵌套循环时速度较慢 , 不太适合做大规模的数值计算和分析 [1 ]. Fortran语言是传统的数值处理语言 , 处理速度高 , 编程简便 , 有很多源代码资源可供使用 , 但绘图功能不强 , 在可视化方面需要编制复杂的代码. 因此 , 用两种语言混合编程 , 可以充分利用 Matlab中丰富的函数及 Fortran语言原有的算法程序 , 弥补彼此的不足 , 这已成为当前科学问题和工程问题的一种良好解决方案. 1 Matlab与 Fortran混合编程及数据传递方式 111 混合编程方式 Matlab提供了多种途径及相应的 API (应用程序接口 ) 函数实现与其它语言的混合编程 , 但就 Fortran来说 , 常用的是利用 Mex文件和利用 Mat2lab引擎两种方式 : 前者是以 Matlab为主调程序 , 调用 Fortran代码编译后的 Mex文件 , 此种方式必须在 Matlab环境下运行 ; 后者则是用 Fortran设计应用程序框架 , 以其编译的程序作为前端客户机 , 通过调用 Matlab引擎 , 实现后台与 Matlab服务器的连接和动态通信. 此种方式下 , 程序可在 W in2dows下任何地方运行 , 但仍需要 Matlab在后台运 行. 因此无论采用哪种方式 , 运行时都必须具有 Matlab的支持. 112 数据传递方式 多种语言的混合编程中 ,最重要的是要解决它们之间的数据传递问题. Matlab和 Fortran语言的运算单位不同 ,前者是基于矩阵 (mxArray结构体 ) , 后者是基于数 ,两者的数