VB与Matlab混合编程研究论文

时间:2022-10-28 08:19:57

VB与Matlab混合编程研究论文

摘 要:为充分发挥Matlab与VB各自的优势,将二者结合起来进行工程应用软件的开发。本文介绍了五种VB与MATLAB混合编程接口的方法,并对各方法性能的优劣进行了比较和评价。

关键词:Matlab;VisualBasic;ActiveX;DDE;MatrixVB;DLL;COM

1引言

MicrosoftVisualBasic是由微软公司开发的可视化编程语言之一,由于它简单易学的特点,只要稍有编程基础就可以很快掌握,可视化的用户界面设计功能,把程序设计人员从繁琐复杂的界面设计中解脱出来。因而很快就风靡全球,是一种十分强大和有生命力的Windows编程语言。但是我们知道VB语言也有它的缺点,即对于数值计算方面其能力欠佳。

Matlab是MATrixLABoratory(矩阵实验室)的缩写,是由美国MathWorks公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言,是国际公认的优秀数学应用软件之一。Matlab擅长处理数值计算和系统模拟仿真,已被广泛应用于数字信号处理、电力系统仿真、图像处理、系统识别等各个领域。但是Matlab也存在一些缺点:1、和其他高级程序相比,程序的执行速度较慢,那是因为MATLAB的程序是解释执行,所以速度较慢;2、对于底层硬件操作以及编程界面方面远远比不上VB、VC等软件。鉴于二者各自的优势,为了提高工程软件的开发效率和质量,将两种软件结合起来进行工程应用软件的开发便成了实际的需要。本文主要讨论VB与Matlab混合编程的几种方法。

2Vb和Matlab接口实现方法介绍

2.1借助ActiveX技术

ActiveX是Microsoft提出的一组使用COM(ComponentObjectModel,部件对象模型)使得软件部件在网络环境中进行交互的技术集,它与具体的编程语言无关。ActiveX的特点就是使不同的软件对象可以跨进程、跨平台并能在网络上进行交互。MatlabActiveX自动化服务的功能主要包括在Matlab工作空间执行Matlab命令,以及直接从工作空间存取矩阵等,下面列出了Matlab自动化服务支持的几个主要方法。

(1)Execute(CommandasString)方法:执行本方法将调用MATLAB执行一条Command字符串决定的Matlab命令,同时返回一条字符串表示命令的执行情况。任何能在MATLAB命令行窗口执行的命令均可以被包括在Command字符串中。

(2)GetFullMatrix方法:该方法用来将Matlab中的一个矩阵变量传送到VB程序的一个一维数组或二维数组中。

(3)PutFullMatrix方法:该项方法是将VB程序中的一个一维数组或二维数组传送至Matlab中的一个矩阵变量中。

(4)VoidMinimizeCommandWindow()方法:该方法用Matlab使命令行窗口最小化,具体调用如下:CallmatlabMinimizeCommandWindow()。

(5)VoidMaximizeCommandWindow()方法:该方法用Matlab使命令行窗口最大化,具体调用如下:CallmatlabMaximizeCommandWindow()。

Microsoft的ActiveX技术使VB在不了解应用程序实现的情况下控制自动化对象。Matlab实现了ActiveX服务支持,在VB中通过调用Matlab引擎(Engine)利用ActiveX通道与Object.Execute可直接使用Matlab的函数库和图形库。

2.2借助DDE技术

动态数据交换(DDE),即DynamicDataExchange的缩写。它是又微软公司提出的,是基于WINDOWS的消息机制,两个WINDOWS应用程序通过相互之间传递消息进行“对话”,从而完成数据的请求、应答、传输,这两个程序分别被称为“Server”和“Client”。Server是数据的提供者,Client是数据的请求和接受者。通过DDE方式建立的数据连接通道是双向的,“Client”不但能读取“Server”中的数据,还能对其进行修改。客户程序启动一个DDE对话,它必须识别两种服务器定义的参数:①要对话的服务名;②对话的主题名。当一个服务器程序获得客户程序一个会话的要求,它响应这个要求,并建立一个DDE会话。服务器和主题名唯一地定义一个会话,在一个DDE会话中,客户和服务器程序通过项目名交换数据,项目名是数据的一个引用。

Matlab有两种主题,分别为System和Engine。System主题允许用户浏览服务器提供的主题列表、System主题项目和服务器端所支持的格式。Engine主题让用户通过提供一个命令来运行Matlab、导入和导出数据,此时Matlab作为服务器端使用。Engine主题支持以下选项:①EngEvalString用于在Matlab中运行一个命令;②EngStringResult用来请求DDE执行命令的字符串结果;③EngFigureResult用来请求DDE执行命令的图形结果。

DDE的功能没有ActiveX那么强,但是DDE也有其自身优势,就是编码方式比较简单,可用于实现一些简单的功能。

2.3使用MatrixVB

MatrixVB是由原MathTools公司开发的专门用于VB的一个COM组件,该组件提供了600多个函数,包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等,专门用来加强VB的矩阵运算与图形绘制功能。MatrixVB是与Matlab相独立的软件产品,可以脱离Matlab运行的独立的应用程序。安装后,就可以在VB中引用它,好处是可以避免重复性劳动,但执行效率较低,实时运算难以实现。

2.4动态链接库DLL方法

Matcom是一个从Maltab到C 的编译器,Mathtools公司利用Matcom技术编写了Mideva工具软件,可以借用C 编译器将Maltab下的M文件转换为可被VB调用的DLL文件。操作如下:

启动Mideva,点菜单FileCompile,选择要进行转换的M文件,修改文件名为“myvbfile”,然后进行编译;编译完成后,将会产生几个文件,VB调用要用到的文件有三个:myvbfile.dll(动态链接库文件)、myvbfile.bas(函数声明文件)、myvbfile.cls(函数文件),其中把myvbfile.dll文件拷贝到VB工程目录或系统目录system32下;在VB开发环境的工程/引用标签中选中Mmatrix,它指向Mmatrix.dll文件,这个文件将在VB开发环境和编译的DLL中起到通信的作用。

2.5利用COM组件技术

COM是

componentobjectmodule的简称,它是一种通用的对象接口,支持COM的程序称为COM组件。Matlat6.5推出了combuilder,它可以把matlab下的程序做成com组件,这些组件做为独立的COM对象,可以直接被VisualBasic,VisualC 等支持COM的语言调用。COM组件的创建步骤如下:(1)输入命令comtool,打开matlabcombuiler;(2)利用File菜单创建一个工程;(3)载入M文件和MEX文件,并进行编辑;(4)利用Build菜单编译工程,生成COM组件。3结论

VisualBasic和Matlab混合编程的方法有很多种,并且各有优缺点。ActiveX技术和DDE技术的缺点是程序运行不能脱离Matlab环境,但使用起来比较简单;MatrixVB效率低,不能进行实时运算;动态链接库DLL方法运行速度最快,但掌握起来比较困难;COM生成器生成的组件比MatrixVB小得多,但灵活性大得多。因此我们应该根据实际情况,灵活使用。

参考文献:

技术和DDE技术的缺点是程序运行不能脱离Matlab环境,但使用起来比较简单;MatrixVB效率低,不能进行实时运算;动态链接库DLL方法运行速度最快,但掌握起来比较困难;COM生成器生成的组件比MatrixVB小得多,但灵活性大得多。因此我们应该根据实际情况,灵活使用。

上一篇:对VaR方法在证券基金的研究 下一篇:对房地产经济可持续发展战略研究