浅谈VB与Matlab混合编程_2011年测绘考研群60350144_百度空间
2006年9月第5期
郭平(广西电力水利职业技术学院, 广西 南宁 530023)

                  

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

关键词: MatlabVisual BasicActiveXDDEMatrixVBDLLCOM

1 引言

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

MatlabMatlab 擅长处理数值计算和系统模拟仿真,已被广泛应用于数字信号处理、电力系统仿真、图像处理、系统识别等各个领域。但是Matlab也存在一些缺点: 1和其他高级程序相比,程序的执行速度较慢,那是因为;2、对于底层硬件操作以及编程界面方面远远比不上VBVC 等软件。鉴于二者各自的优势,为了提高工程软件的开发效率和质量,将两种软件结合起来进行工程应用软件的开发便成了实际的需要。本文主要讨论VBMatlab混合编程的几种方法。

2 VbMatlab接口实现方法介绍

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 ()

MicrosoftActiveX技术使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是一个从MaltabC++的编译器, Mathtools 公司利用Matcom 技术编写了Mideva工具软件,可以借用C++编译器将Maltab下的M文件转换为可被VB调用的DLL文件。操作如下:

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

2.5 利用COM组件技术

COM

3 结论

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



郑重声明:资讯 【浅谈VB与Matlab混合编程_2011年测绘考研群60350144_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——