摘 要: 为充分发挥Matlab与VB各自的优势,将二者结合起来进行工程应用软件的开发。本文介绍了五种VB与MATLAB混合编程接口的方法,并对各方法性能的优劣进行了比较和评价。
关键词: Matlab;Visual Basic;ActiveX;DDE;MatrixVB;DLL;COM
1 引言
Microsoft Visual Basic是由微软公司开发的可视化编程语言之一,由于它简单易学的特点,只要稍有编程基础就可以很快掌握,可视化的用户界面设计功能,把程序设计人员从繁琐复杂的界面设计中解脱出来。因而很快就风靡全球,是一种十分强大和有生命力的Windows 编程语言。但是我们知道VB语言也有它的缺点,即对于数值计算方面其能力欠佳。
Matlab是Matlab 擅长处理数值计算和系统模拟仿真,已被广泛应用于数字信号处理、电力系统仿真、图像处理、系统识别等各个领域。但是Matlab也存在一些缺点: 1、和其他高级程序相比,程序的执行速度较慢,那是因为;2、对于底层硬件操作以及编程界面方面远远比不上VB、VC 等软件。鉴于二者各自的优势,为了提高工程软件的开发效率和质量,将两种软件结合起来进行工程应用软件的开发便成了实际的需要。本文主要讨论VB与Matlab混合编程的几种方法。
2 Vb和Matlab接口实现方法介绍
2.1 借助ActiveX技术
ActiveX是特点就是使不同的软件对象可以跨进程、跨平台并能在网络上进行交互。Matlab ActiveX自动化服务的功能主要包括在
(1) Execute (Command as String) 方法: 执行本方法将调用MATLAB执行一条Command 字符串决定的Matlab命令,同时返回一条字符串表示命令的执行情况。任何能在MATLAB命令行窗口执行的命令均可以被包括在Command 字符串中。
(2) GetFullMatrix方法: 该方法用来将Matlab中的一个矩阵变量传送到VB 程序的一个一维数组或二维数组中。
(3) PutFullMatrix 方法: 该项方法是将VB 程序中的一个一维数组或二维数组传送至Matlab中的一个矩阵变量中。
(4)Void Minimize Command Window( )方法:该方法用Matlab使命令行窗口最小化,具体调用如下: CallmatlabMinimize CommandWindow ()。
(5)VoidMaximize CommandWindow ()方法:该方法用Matlab使命令行窗口{zd0}化, 具体调用如下: CallmatlabMaximize CommandWindow ()。
Microsoft的ActiveX技术使VB在不了解应用程序实现的情况下控制自动化对象。Matlab实现了ActiveX服务支持, 在VB中通过调用Matlab引擎 ( Engine)利用ActiveX通道与Object. Execute可直接使用Matlab的函数库和图形库。
2.2 借助
动态数据交换(客户程序启动一个DDE对话,它必须识别两种服务器定义的参数: ①要对话的服务名; ②对话的主题名。当一个服务器程序获得客户程序一个会话的要求,它响应这个要求,并建立一个DDE会话。服务器和主题名{wy}地定义一个会话,在一个DDE 会话中,客户和服务器程序通过项目名交换数据,项目名是数据的一个引用。
Matlab有两种主题,分别为System 和Engine 。System主题允许用户浏览服务器提供的主题列表、Engine主题让用户通过提供一个命令来运行Engine主题支持以下选项:①EngEvalString 用于在Matlab 中运行一个命令;②EngStringResult 用来请求DDE 执行命令的字符串结果; ③EngFigureResult 用来请求DDE 执行命令的图形结果。
DDE 的功能没有ActiveX 那么强,但是DDE也有其自身优势,就是编码方式比较简单,可用于实现一些简单的功能。
2.3 使用MatrixVB
MatrixVB是由原MathTools公司开发的专门用于VB的一个,该组件提供了600 多个函数, 包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等,专门用来加强安装后,就可以在,好处是可以避免重复性劳动,但执行效率较低,实时运算难以实现。
2.4 动态链接库DLL方法
Matcom是一个从Maltab到C++的编译器, Mathtools 公司利用Matcom 技术编写了Mideva工具软件,可以借用C++编译器将Maltab下的M文件转换为可被VB调用的DLL文件。操作如下:
启动Mideva, 点菜单FileCompile,选择要进行转换的M文件,修改文件名为“myvbfile”,然后进行编译;编译完成后, 将会产生几个文件,VB调用要用到的文件有三个:myvbfile.dll (动态链接库文件)、函数声明文件)、 函数文件),其中把myvbfile.dll 文件拷贝到VB工程目录或系统目录system32下;在VB开发环境的工程/引用标签中选中Mmatrix ,它指向Mmatrix.dll文件,这个文件将在VB开发环境和编译的DLL中起到通信代理的作用。
2.5 利用COM组件技术
COM是
3 结论
Visual Basic和Matlab混合编程的方法有很多种,并且各有优缺点。ActiveX技术和的缺点是程序运行不能脱离Matlab环境,但使用起来比较简单;MatrixVB效率低,不能进行实时运算;动态链接库DLL方法运行速度最快,但掌握起来比较困难;MatrixVB小得多,但灵活性大得多。因此我们应该根据实际情况,灵活使用。
|