当前位置:首页 >> 机械/仪表 >>

FORTRAN, VC++,VB, DELPHI与MATLAB接口技术方法综述


FORTRAN, VC++,VB, DELPHI 与 MATLAB 接口技术方法综述
摘要:面向对象的可视化编程工具 FORTRAN,VC++,VB, DELPHI 使用广泛, 而 MATLAB 计算机绘图功能强大, 它们之间的接口技术使之进行相互融合,从而更 好地体现各自的优越性。 关键词: MATLAB,VC++,VB,FORTRAN,DELPHI,接口技术,混合编

程 中图分类号:TP311 文献标识码:A

The Review of interfacing technology between FORTRAN, VC++,VB,DELPHI and MATLAB
Abstract: FORTRAN is one of the most popular visual programming tools at present. The same as FORTRAN ,VC++,VB and DELPHI are other three Kinds of the most excellent programming languages, while MATLAB has powerful functions in calculating and drawing. The interfacing technology which combining MATLAB with FORTRAN ,VC++,VB and DELPHI, respectively bring out the best of their own advantages Keywords : MATLAB, FORTRAN,VC++,VB, DELPHI, Interface technology, Mixed Programming MATLAB 是美国 MathWorks 公司出品的商业数学软件,用于算法开发、数据可 视化、 数据分析以及数值计算的高级技术计算语言和交互式环境。应用MATL AB软件可以很方便地实现许多复杂的数学算法,而这些复杂的算法在其他开发 环境中需要大量代码才能实现。 但是在数据输入、硬件控制等方面相对较弱 , 程序执行速度也相对较慢,且一般需要在MATLAB环境下运行,这是 MATLAB 的不足之处。 因而在解决实际工程问题时为将MATLAB强大的数学功能服务 于其他开发环境,通常 MATLAB 与其他高级语言混合编程。 FORTRAN 源自于“公式翻译” (英语:FormulaTranslation)的缩写,是一 种编程语言。它是世界上最早出现的计算机高级程序设计语言, FORTRAN 语言 的最大特性是接近数学公式的自然描述, 在计算机里具有很高的执行效率。 易学, 语法严谨,像 MATLAB 一样,可以直接对矩阵和复数进行运算, 。FORTRAN 语言 是一种极具发展潜力的语言,在全球范围内流行过程中,FORTRAN 语言的标准化 不断吸收现代化编程语言的新特性,并且在工程计算领域仍然占有重要地位。 FORTRAN 语言与程序化语言 JAVA,C#等高级语言相比,它缺乏创造力。但是,由 于很多优秀的工程计算软件都是运用 FORTRAN 语言编写,例如 ANSYS、Marc,为 了能够使用这些商业软件的高级功能,用户必须先学会 FORTRAN 语言,才能编写 应用程序接口。由此决定了 FORTRAN 在工程计算领域将长期处于统治地位。 Microsoft Visual C++, (简称 Visual C++、MSVC、VC++或 VC)微软公司的 C++开发工具,具有集成开发环境,可提供编辑 C 语言,C++以及 C++/CLI 等编程 语言。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计 集成交互操作、 可开发多种程序等优点,而且通过简单的设置就可使其生成的程 序框架支持数据库接口、OLE2,WinSock 网络、3D 控制界面。它以拥有“语法高

亮” ,IntelliSense(自动完成功能)以及高级除错功能而著称。其编译及建置 系统以预编译头文件、 最小重建功能及累加连结著称。这些特征明显缩短程式编 辑、编译及连结花费的时间,在大型软件计划上尤其显著。 Visual Basic 是一种由微软公司开发的包含协助开发环境的事件驱动编程 语言。从任何标准来说,VB 都是世界上使用人数最多的语言——不仅是盛赞 VB 的开发者还是抱怨 VB 的开发者的数量。 它源自于 BASIC 编程语言。 Visual Basic 语言具有不支持继承、无原生支持多线程、异常处理不完善等三项明显缺点,使 其有所局限性。 DELPHI 是由 Borland 公司开发的一种面向对象的 Pascal 语言,它采用可视 化的集成开发环境(IDE),兼有 VisualC++的强大功能和 Visual Basic 的易学易 用,代码输人量小,开发效率高,而且有强大的数据库引擎(BDE),以及支持嵌入式 汇编、动态链接库调用、Active 组件等诸多功能,一直成为可视化软件开发设计 人员的首选工具。在 DELPHI 众多的优势当中,它在数据库方面的特长显得尤为 突出:适应于多种数据库结构,从客户机/服务机模式到多层数据结构模式;高 效率的数据库管理系统和新一代更先进的数据库引擎; 最新的数据分析手段和提 供大量的企业组件。作为一种高级语言,DELPHI 的编译器执行速度非常快,但是 在利用 DELPHI 进行各种复杂的工程科学计算时,不仅工作量大,而且开发效率也 很低。 综合上述各种开发环境的优缺点,本文介绍了 FORTRAN, VC++, VB, DELPHI 与 MATLAB 混合编程的接口技术。

1

混合编程

1.1 定义 混合编程是指使用两种或两种以上的程序设计语言来开发应用程序 的过程。至今为止,计算机上流行的程序设计语言有多种,它们有各自的优势和 不足, 混合编程可以充分利用各种程序设计语言的优势。混合编程的关键问题是 参数传递。 相比用单一语言开发同等性能的程序,它需更少的时间,大大缩短了开 发时间。 1.2 适用条件 1)不同软件间数据通讯方便; 2)不同编程语言实现相同算法效率相差很大; 3)不同软件间除了数据通讯,其他相互独立。 其中特征 1)是实现混合编程的前提条件,,数据得到有效传输,混合编程才 能进行;特征 2)是进行混合编程的作用和意义,只有显著提高效率才有应用意 义和价值;特征 3)保障了混合编程技术得以正确执行。一个程序中除了有大量 的数据外还有很多代码,要保证一个程序的代码只能对其内的数据进行操作,另 一个程序的数据对它不能识别操作,即及时避免了代码的执行发生相互干扰。

2
2.1

接口技术

FORTRAN 与 MATLAB 接口技术 FORTRAN 与 MATLAB 混合编程方法如下: 1)利用 Mex 文件实现混合编程 Mex 是 MATLAB 的可执行程序,在 Windows 环境中,它是扩展名为 DLL 的动态链接库,可以在 MATLAB 中直接调用。FORTRAN Mex 文件通常由两个显著不同的部分组成:① 计算子程序,是完成计算功能的纯 FORTRAN 程序,通常为现有的 FORTRAN 程序代码;② 入口子程序,是计算子程序 与 MATLAB 环境之间的接口,用来完成相互之间的调用。

2)利用 MATLAB 引擎实现混合编程 FORTRAN 程序通过调用 MATLAB 引擎函 数,便可向 MATLAB 发送命令,控制其运行。启动 MATLAB 引擎时,相当于启动了另 外一个 MATLAB 进程,该进程在后台运行,用户应用程序通过 MATLAB 引擎函数库提 供的函数完成与 MATLAB 引擎的数据交换和命令传递任务。 2.2 VC++与 MATLAB 接口技术 VC++与 MATLAB 混合编程方法如下: 1)用 MATLAB 引擎,采用客户机/服务器(Client/Server)的计算模式。在 VC 中设计程序框架,作为前端客户机,通过调用 MATLAB 引擎与后台 MATLAB 服 务器建立连接, 实现命令和数据信息的传递。这种方式需要 MATLAB 在后台运行, 离不开 MATLAB 环境。不利于软件的开发,但是它可以充分利用 MATLAB 的功能, 包括调用工具箱函数和图形函数。 2) 使用 MatCom 编译器可以将 MATLAB 源代码译成同等功能的 C++代码,既保 持了 MATLAB 的优良算法,又提高了执行速度。它还支持一定的图形显示,生成 代码的可读性很好。因其简单便捷、功能强大、应用灵活,本文主要探讨这种实 现方案。 3)用 MATLAB 的编译器将.m 源文件转化为 C、C++等各种不同类型的源代码, 并在此基础上根据应用需要生成 MEX 文件、独立可执行应用程序等文件类型,大 大提高程序的运行速度, 提高代码的执行效率。主要是使用 mcc 命令实现文件的 转化。但是这种方法不支持图形函数,不能编译一些 MATLAB 的内建函数,并且 转换的代码可读性不太好。 2.3 VB 和 MATLAB 接口技术 VB 和 MATLAB 混合编程方法如下: 1 )通过嵌入 VB 的矩阵函数库 MatrixVB 的方法 MatrixVB 是由第三方 (MathTools 公司)提供的 COM 组件,包含了大量与 MATLAB 相似的函数与调用语 法,可以加强 VB 内建数学运算与图形展示功能,在 VB 程序代码中可以像使用 VB 自己的函数一样使用 MatrixVB 的函数,而且可以不依赖于 MATLAB 的环境在 Visual Basic 中完成矩阵运算与图形绘制显示等功能,这种方法使用起来简单, 编程效率较高。MatrixVB 函数库的功能大致可分为 8 大类(矩阵运算、运算符重 载、图形图像处理、最优化运算、多项式、信号处理、随机与统计分析、控制系 统)。 2)将 MATLAB 程序转换为动态链接库 若要将 MATLAB 下开发的程序完全从 MATLAB 环境中独立出来,随 VB 程序一起发布,则必须将 MATLAB 程序编译成动态 链接库(即 DLL 文件),这样就可以被其它多种编程语言所利用. MathTools 公司 为此利用 MatCom 技术推出了一个 Mideva 工具软件,它进一步扩展了 MatCom 技术, 利用 VC++的编译器,提供了一个更为完全、强大的开发和运行 M 文件的环境,使 得 M 文件运行更快,可以将一个 M 文件编译成可执行文件和可以被 VC,VB 和 EXCEL 利用的 DLL 文件。 3)使用动态数据交换技术 动态数据交换(DDE)是 Windows 过程之间的通信 机制,使用 Windows 消息和共享的内存,使相互合作的应用程序能够交换数据,其 中,数据的提供者为 DDE 的服务端,数据的接受者为 DDE 的客户端。 4) 使用 ActiveX 自动化服务技术 ActiveX 部件是 Microsoft 公司提供的一 种用于模块集成的协议,与 DDE 相似,允许控制程序和部件控制另一种服务器程 序和部件.但它在运行时,不需要首先启动 MATLAB,功能更为强大.因此 VB 程序可 以作为控制程序来启动和控制 MATLAB。 2.4 DELPHI 和 MATLAB 接口技术 DELPHI 和 MATLAB 混合编程方法如下: 1)使用 MATLAB 引擎 MATLAB 本身并没有提供与 DELPHI 的应用接口程序,

但它提供了基于 Win32 平台的 VC+++应用程序接口,包括 MATLAB 引擎和C/C++ 函数库。为此,我们可以利用 MATLAB 与 VC++之间的接口函数,通过 MATLAB 引擎 进行指令处理和数据传递,将用 C++语言编写出的动态链接库(DLL)作为 DELPHI 与 MATLAB 的接口,在 DELPHI 中进行 C++动态链接库函数的调用以实现 DELPHI 与 Madab 的混合编程。 2)利用 DDE(动态数据交换) 动态数据交换是一种基于 Windows 的信息机 制,在客户机和服务器程序之间通过互相传递信息进行对话 ,实现不同程序问的 数据交换。在 DELPHI 中利用 DDE 技术和 MATLAB 进行动态数据交换。DELPHI 为 客户机,确定对话主题,连接 MATLAB 服务器,建立 DDE 对话。 在前台操作界面上放 置 Ddeclientconv 和 Ddeclientitem 组件。Ddeclientconv 用于客户端同服务器 建立对话和确立对话主题,其 DdeService 属性设置成 MATLAB,DdeTopic 属性设置 成 engine 或 system,调用 openlink 方法建立 DDE 对话; Ddeclientite 用于客户 端注册对话项目,通过 Text 和 Lines 属性显示被链接的数据。 3) 利用 Mideva 软件平台 Mideva 是 MATLAB 公司推出的一种 MATLAB 编译开 发软件平台,是一个强大而完备的M文件解释和开发环境,它通过应用 MatCom 和 实时编译技术而达到快捷的速度。该软件平台有为 BorlandC++,VB 和 DELPHI 等 编程语言开发的不同版本。 Mideva 具有编译转换功能,能将 MATLAB 函数或编写 的 MATLAB 程序转换为C++形式的 DLL.然后在 DELPHI 中调用动态库函数,这样就 可能实现对 MATLAB 各种工具箱函数的调用,利用 Mideva 平台实现 DELPHI 和 MATLAB 混合编程的流程,如图 1 所示:

编写 M 文件 在 Mideva 中执行 生成动态连接

在 DELPHI 中调用

图 1 利用 Mideva 软件平台实现混合编程流程 4) 利用文件传输方式 这种混合编程的思路是在 DELPHI 环境中将要处理的 数据和执行的命令写为M文件,然后调用后台 MATLAB 程序执行所编写的M文件 完成各种运算,最后读取 MATLAB 的运算结果,如图所示:

启动 DELPHI 确定对话主题 启动 MATLAB 并建立对话 Yes 确定对话项目 执行命令
No

有新项目 断开连接 结束

图 2 利用 DDE 实现混合编程流程

3

结论

本文阐述了了 FORTRAN, VC++,VB, DELPHI 与 MATLAB 接口技术,应用于工 程中它们的实现极大地缩短了程序开发周期 ,减轻了编程工作量,提高了工作效 率,同时也使接口技术得到进一步推广。 参考文献: [1]张宜华.精通 MATLAB5.0[M]. 清华大学出版社,1999. [2]MATLAB 与外部程序接口[M].北京:电子工业出版社,2002. [3 王志松.MATLAB 与 FORTRAN 语言互调用接口的实现 [J]. 电脑编程与维护技 巧,2001.12(10):28- 30. [4]陈磊.VC 下利用 MATLAB 引擎的程序设计[J].电脑编程技巧与维护,1999,2. [5](美)Richard C.Leinecker,等.张艳,等译.Visual C+ +6 宝典[M].电子工业 出版社,1999,4. [6]齐锋.Visual Basic 6.x 程序设计[M].北京:中国铁道出版社,2003. [7]段晓君,杜小勇,易东云.将 MATLAB 函数转换为 VB 可用的 DLL[J].电脑与信息 技术,2000,(1):44 一 47. [8 王 艳 丽 .Delphi 与 MATLAB 混 合 编 程 的 5 种 方 法 [ J ]. 菏 泽 学 院 学 报,2006,28(2):100-102.


相关文章:
FORTRAN, VC++,VB, DELPHI与MATLAB接口技术方法综述
FORTRAN, VC++,VB, DELPHI 与 MATLAB 接口技术方法综述摘要:面向对象的可视化编程工具 FORTRAN,VC++,VB, DELPHI 使用广泛, 而 MATLAB 计算机绘图功能强大, 它们...
计算方法B上机题目
2014 年《计算方法 B》上机题目一.计算机语言要求上机实习使用语言原则上不限, 可以使用 C、 C++FORTRANVC/VB, C#、Matlab、PHP、JavaScript 等语2014 年...
计算机文化教学要点
(Fortran, basic, pascal, c, VB, VC, Java, Delphi 等) (5)数据库管理...(AutoCAD, MATLAB, Mathematica、SAS、SPSS) (8)多媒体创作工具(Authorware ,...
实验二 MATLAB入门
Fortran C 等那样难于掌握,用 Matlab 编写程序...这可让使用者也可以像 VBVCDELPHI 等那 样...《多媒体技术基础课程设计与学习辅导》林福宗 清华...
大学电脑复习重点
设备。使用 4 线连接器,符合即插即用规范,可通过 USB 接口向 外设提供 5V ...FortranMatlab 是面向计算的语言。C++、 JAVA、C#,VB,VC, Delphi 等是面向...
VC++与Matlab混合编程之引擎操作详解
VC++与Matlab混合编程之引擎操作详解_计算机软件及应用_IT/计算机_专业资料。Visual...Fortran 等语言,通过 这些接口函数,用户可以在其它编程环境中实现对 Matlab 的...
关于matlab的学习论文
学生编程的 负担,用 FORTRAN 编写了最早的 MATLAB。...打通了与 MATLAB接口,从而把其数学计算能力提高...这可让使用者也可以象 VBVC、VJ、DELPHI 等那样...
第一、二章 MATLAB 入门(1)
库程序的“通俗易用”的接口,形成了用 FORTRAN 编写的萌芽状态 的 MATLAB 。 ...这可让使用者也可以象 VBVC、 VJ、DELPHI 等那样进行一般的可视化的程序编辑...
多通道数据采集文献综述
同时单片机的结构简单, 接口数量类型都比较少, 功能...的软件开发工具对其进行开发(如 Delphi,VB,VC 等)...软件开发方法有基于 MATLAB, LABVIEW 和 VB、VC 等...
_软件工程06L
与 Matlab、Mathematica 等“高级”数学工具相比,Fortran 2003 在便捷性和 可视化...现已 有多种可视化软件开发环境,如 VBVC++、VF,以及 Delphi(面向对象的 ...
更多相关标签:
vc fortran | fortran调用vc的dll | matlab fortran | matlab调用fortran | matlab fortran编译器 | fortran和matlab | fortran转matlab | matlab mex fortran |