云南大学学报(自然科学版),JournalofYunnanUniversity
2008,30(S2):247~249CN53-1045/NISSN0258-7971
VisualC#.NET,DELPHI,JAVA与
MATLAB接口技术的研究
杨晓霞,候锐锋
(成都理工大学信息管理学院应用数学专业,四川成都610059)
摘要:阐述了当今最为流行的面向对象的可视化编程工具VisualC#.NET,DELPHI,JAVA与计算机绘图功能强大的MATLAB之间的接口技术,从而进行相互融合,更好地体现各自的优越性.
关键词:VisualC#.NET,DELPHI,JAVA,混合编程
中图分类号:TP311文献标识码:A文章编号:0258-7971(2008)S2-0247-03
*
MATLAB是MathWorks公司开发的演算纸式的程序设计语言,是一个跨平台的科学计算环境,具有强大的矩阵运算、数值分析、信号处理、系统识别、图像语音处理等功能.应用MATLAB软件可以很方便地实现许多复杂的数学算法,而这些复杂的算法在其他开发环境中需要大量代码才能实现.但MATLAB也有不足之处,如在数据输入、硬件控制等方面相对较弱,程序执行速度也相对较慢,且一般需要在MATLAB环境下运行.所以在解决实际工程问题时往往将MATLAB与其他高级语言混合编程,将MATLAB强大的数学功能服务于其他开发环境
[1]
DELPHI是由Borland公司开发的一种面向对象的Pascal语言,它采用可视化的集成开发环境(IDE),兼有VisualC++的强大功能和VisualBasic的易学易用,代码输人量小,开发效率高,而且有强大的数据库引擎(BDE),以及支持嵌入式汇编、动态链接库调用、Active组件等诸多功能,一直成为可视化软件开发设计人员的首选工具.作为一种高级语言,DELPHI的编译器执行速度非常快,但是在利用DELPHI进行各种复杂的工程科学计算时,不仅工作量大,而且开发效率也很低.JAVA是由SUNMicroSystem公司推出的的面向对象程序语言.JAVA由于其与生俱来的诸多优点,例如跨平台、多线程、动态性、面向对象等等,目前已成为成长最快的软件产品之一.然而,JAVA在数据分析和处理方面的能力不像其跨平台等优点那么突出,尤其是在对数组矩阵之类数据进行操作时会因为多次循环而速度变得缓慢,这在数组或矩阵维数很大时尤其明显.
本文结合上述各种开发环境的优缺点,阐述了VisualC#.NET,DELPHI,JAVA与MATLAB混合编程的接口技术.
.
.NET技术是微软公司推出的一个全新概念,它代表了一个集合、一个环境、一个编程的基础.微软.NET技术的核心是公共语言运行时(CommonLanguageRuntime,CLR)环境.CLR的中心思想就是提供一个多种应用程序接口(ApplicationProgramInterface,API)的中间层,作用于低级的WindowsWin32API功能和应用程序代码之间.VisualC#.NET是VisualStudio.NET软件开发包的重要组成部分,其编程语言C#是微软推出的一种面向对象的程序设计语言,它结合了许多新的功能和特点,但其数学计算能力不强,难以实现复杂的数学算法.
*
1混合编程
1.1混合编程基本思想在一个应用软件的开发
收稿日期:2008-10-25作者简介:杨晓霞(1982-
),女,山西人,硕士生,主要从事泛函分析及其应用方面的研究.
248云南大学学报(自然科学版)第30卷
周期中,把不同阶段的算法和数据处理交给在这方面具有优势的编程语言或软件.编程人员无需为实现某种算法和操作专门写程序代码,程序员只要把精力集中在不同软件之间数据通讯的问题上.相比用单一语言开发同等性能的程序,它需更少的时间,大大缩短了开发时间.
1.2混合编程适用条件混合编程所要解决的问题一般具备以下几个特征:
不同软件间数据通讯方便;
不同编程语言实现相同算法效率相差很大;
!不同软件间除了数据通讯.其他相互.其中特征是实现混合编程的前提条件,数据不能有效传输,混合编程也无从谈起;特征 是进行混合编程的作用和意义,如果使用另一种编程语言不能显著的提高效率,那么混合编程就失去其应用意义和价值;特征!是混合编程技术得以正确执行的保障,一个程序中除了有大量的数据外还有很多代码,要保证一个程序的代码只能对其内的数据进行操作.另一个程序的数据对它而盲是∀黑匣子#,也就是要避免通常所说的相互干扰问题.
为DELPHI与MATLAB的接口,在DELPHI中进行C++动态链接库函数的调用以实现DELPHI与Madab的混合编程.
利用Mideva软件平台Mideva是MATLAB公司推出的一种MATLAB编译开发软件平台,是一个强大而完备的M文件解释和开发环境,它通过应用MatCom和实时编译技术而达到快捷的速度.该软件平台有为BorlandC++,VisualBasic和DELPHI等编程语言开发的不同版本.Mideva具有编译转换功能,能将MATLAB函数或编写的MATLAB程序转换为C++形式的DLL.然后在DELPHI中调用动态库函数,这样就可能实现对MATLAB各种工具箱函数的调用,利用Mideva平台实现DELPHI和MATLAB混合编程的流程.
!利用文件传输方式这种混合编程的思路是在DELPHI环境中将要处理的数据和执行的命令写为M文件,然后调用后台MATLAB程序执行所编写的M文件完成各种运算,最后读取MATLAB的运算结果.
∃利用DDE(动态数据交换)动态数据交换是一种基于Windows的信息机制,在客户机和服务器程序之间通过互相传递信息进行对话,实现不同程序问的数据交换.在DELPHI中利用DDE技术和MATLAB进行动态数据交换.DELPHI为客户机,确定对话主题,连接MATLAB服务器,建立DDE对话.在前台操作界面上放置Ddeclientconv和Ddeclientitem组件.Ddeclientconv用于客户端同服务器建立对话和确立对话主题,其DdeService属性设置成MATLAB,DdeTopic属性设置成engine或system,调用openlink方法建立DDE对话;Ddeclientitem用于客户端注册对话项目,通过Text和Lines属性显示被链接的数据.
2.3MATLAB与JAVA的混合编程研究众所周知,JAVA是一种面向对象的编程语言,每个实例对象都是由一个已知的类模型实例化而来的,所以必须先建立一个类,再把它实例化为一个对象,接着利用JAVA里面的I/0接口,将对象所包含的信息保存在一个文件中,紧接着使用MATLAB中事先定义好的JAVA的接口,把事先存放的文件数据信息写入到MATLAB环境中,MATLAB对数据进行处理后重新保存该文件,这样JAVA再次从这个文件中读取的数据信息就是已经经过MATLAB
2实现方法介绍
2.1MATLAB与VisualC#.NET混合编程MATLAB与VisualC#.NET混合编程方法基本有3种:
直接在VisualC#.NET中通过MATLAB引擎调用在MATLAB中编写的程序;
用COMBuilder把MATLAB中编写的程序打包成COM组件,然后在VisualC#.NET直接引用;
!按照COMBuilder的语法,在VisualC#.NET中直接书写MATLAB语句
[2,3]
.
[4]
2.2DELPHI和MATLAB接口实现方法介绍DELPHI与MATLAB混合编程的4种方法
:
使用MATLAB引擎MATLAB本身并没有提供与DELPHI的应用接口程序,但它提供了基于Win32平台的VisualC++应用程序接口,包括MATLAB引擎(Engine)和C/C++函数库.为此,我们可以利用MATLAB与VisualC++之间的接口函数,通过MATLAB引擎进行指令处理和数据传递,将用C++语言编写出的动态链接库(DLL)作
第S2期杨晓霞:VisualC#.NET,DELPHI,JAVA与MATLAB接口技术的研究249
运算处理过的.混合编程流程如图l所示
[5]
.
3结束语
本文介绍了VisualC#.NET,DELPHI,JAVA与MATLAB的接口技术,它们的实现极大地缩短了程序开发周期,减轻了编程工作量,提高了工作效率.在工程研究中,这种混合编程的接口技术将会有很大的应用.
参考文献:
[1]飞思科技产品研发中心.MATLAB6.5应用接口编程
[M].北京:电子工业出版社2003.
[2]王华,袁中凡.VisualC++,LabVIEW,LabWindows/
CVI与MATLAB接口技术的研究[J].计算机应用研究,2007(2):281285.
[3]王艳丽.Delphi与Matlab混合编程的5种方法[J].
菏泽学院学报,2006,28(2):100102.
[4]焦纲领,邓建辉,韩啸.MATLAB与VisualC#.NET
混合编程[J].海军航空工程学院学报,2008,23(1)109111.
[5]林美,吕新安,齐从谦.基于MATLAB与JAVA的混
图1MATLAB与JAVA的混合编程流程图
Fig.1TheprogrammingflowchartminglingwithMATLAB
andJAVA
合编程研究及实现[J].农业网络信息.2006(12):3134.
ResearchoninterfacingtechnologybetweenVisualC#.NET,
DELPHI,JAVAandMATLAB
YANGXiaoxia,HOURuifeng
(DepartmentofMathematicswithApplication,CollegeofInformationManagement,
ChengduUniversityofTechnology,Chengdu610056,China)
Abstract:AninterfacingtechnologybetweenVisualC#.NET,DELPHI,JAVAandMATLABisdescribedinthisarticle.VisualC#.NETisoneofthemostpopularvisualprogrammingtools,andDELPHIandJAVAaretwokindsofmostexcellentprogramminglanguagesatpresen,twhileMATLABhaspowerfulfunctionsincalculatinganddrawing.OnlybycombiningMATLABwithVisualC#.NET,DELPHI,JAVArespectivelyitcanmakebestoftheirownadvantages.
Keywords:VisualC#.NET;DELPHI,;JAVAMixedProgramming