五种VB与MATLAB混合编程接口的方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘 要: 为充分发挥 Matlab 与 VB 各自的优势,将二者结合起来进行工程应用 软件的开发。本文介绍了五种 VB 与 MATLAB 混合编程接口的方法,并对各方 法性能的优劣进行了比较和评价。 关键词: Matlab;Visual Basic;ActiveX;DDE;MatrixVB;DLL;COM 1 引言 Microsoft Visual Basic 是由微软公司开发的可视化编程语言之一,由于它简单 易学的特点,只要稍有编程基础就可以很快掌握,可视化的用户界面设计功能, 把程序设计人员从繁琐复杂的界面设计中解脱出来。因而很快就风靡全球,是一 种十分强大和有生命力的 Windows 编程语言。但是我们知道 VB 语言也有它的 缺点,即对于数值计算方面其能力欠佳。
2 Vb 和 Matlab 接口实现方法介绍 2.1 借助 ActiveX 技术 ActiveX 是特点就是使不同的软件对象可以跨进程、跨平台并能在网络上进行交 互。Matlab ActiveX 自动化服务的功能主要包括在 (1) Execute (Command as String) 方法: 执行本方法将调用 MATLAB 执行一 条 Command 字符串决定的 Matlab 命令,同时返回一条字符串表示命令的执行 情况。任何能在 MATLAB 命令行窗口执行的命令均可以被包括在 Command 字符串中。 (2) GetFullMatrix 方法: 该方法用来将 Matlab 中的一个矩阵变量传送到 VB 程 序的一个一维数组或二维数组中。
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 小得多,但灵活性大得多。因此我们应该根据实际情况,灵活使用。
Matlab 是 Matlab 擅长处理数值计算和系统模拟仿真,已被广泛应用于数字信号处理、电力系统仿真、图 像处理、系统识别等各个领域。但是 Matlab 也存在一些缺点: 1、和其他高级程序相比,程序的执行速度 较慢,那是因为;2、对于底层硬件操作以及编程界面方面远远比不上 VB、VC 等软件。鉴于二者各自的优 势,为了提高工程软件的开发效率和质量,将两种软件结合起来进行工程应用软件的开发便成了实际的需要。 本文主要讨论 VB 与 Matlab 混合编程的几种方法。
Baidu Nhomakorabea
(3) PutFullMatrix 方法: 该项方法是将 VB 程序中的一个一维数组或二维数组传 送至 Matlab 中的一个矩阵变量中。 (4)Void Minimize Command Window( )方法:该方法用 Matlab 使命令行窗口 最小化,具体调用如下: CallmatlabMinimize CommandWindow ()。 (5)VoidMaximize CommandWindow ()方法:该方法用 Matlab 使命令行窗口 最大化, 具体调用如下: CallmatlabMaximize CommandWindow ()。 Microsoft 的 ActiveX 技术使 VB 在不了解应用程序实现的情况下控制自动化对 象。Matlab 实现了 ActiveX 服务支持, 在 VB 中通过调用 Matlab 引擎 ( Engine) 利用 ActiveX 通道与 Object. Execute 可直接使用 Matlab 的函数库和图形库。 2.2 借助 动态数据交换(客户程序启动一个 DDE 对话,它必须识别两种服务器定义的参 数: ①要对话的服务名; ②对话的主题名。当一个服务器程序获得客户程序一个会 话的要求,它响应这个要求,并建立一个 DDE 会话。服务器和主题名唯一地定义一 个会话,在一个 DDE 会话中,客户和服务器程序通过项目名交换数据,项目名是数 据的一个引用。 Matlab 有两种主题,分别为 System 和 Engine。System 主题允许用户浏览服务 器提供的主题列表、Engine 主题让用户通过提供一个命令来运行 Engine 主题 支持以下选项:①EngEvalString 用于在 Matlab 中运行一个命令;② EngStringResult 用来请求 DDE 执行命令的字符串结果; ③ EngFigureResult 用来请求 DDE 执行命令的图形结果。 DDE 的功能没有 ActiveX 那么强,但是 DDE 也有其自身优势,就是编码方式比 较简单,可用于实现一些简单的功能。
相关文档
最新文档