matlab与vb混合编程

上传人:suns****4568 文档编号:89456351 上传时间:2019-05-25 格式:PPT 页数:24 大小:2.40MB
返回 下载 相关 举报
matlab与vb混合编程_第1页
第1页 / 共24页
matlab与vb混合编程_第2页
第2页 / 共24页
matlab与vb混合编程_第3页
第3页 / 共24页
matlab与vb混合编程_第4页
第4页 / 共24页
matlab与vb混合编程_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《matlab与vb混合编程》由会员分享,可在线阅读,更多相关《matlab与vb混合编程(24页珍藏版)》请在金锄头文库上搜索。

1、MATLAB与VB混合编程,MATLAB是MathWork公司于1984年推出的数学工具软件,其科学计算功能的强大和开放式的开发思想使其成为当今最为流行的、最为优秀的科技应用软件之一,在数值分析、科学计算、算法开发、建模和仿真等方面具有独特的优势。支持对通信系统、信号处理、图像处理、小波分析、鲁棒控制、系统辨别、非线性控制、模糊控制、神经网络、优化理论、样条、商用统计分析等30多个不同领域的内容的处理和分析。但其用户界面的设计不如VB方便,解释执行的运行环境使其开发的程序不能离MATLAB独立地进行发布。因此通过MATLAB与VB混合编程,利用VB作为前端开发工具进行应用程序开发的同时,将应用

2、程序中较为复杂的数学计算交由MATLAB来完成,从而更加地充分发挥两者的优势。,一、 ActiveX技术 二、 动态链接库(DLL) 实现步骤(一) Matlab7.1 版 开发环境 编写m文件 生成COM组件 VB中调用动态链接库 应用程序发布 应用程序安装 实现步骤(二) Matlab2013a 版,主要内容,一、 ActiveX技术,ActiveX自动化协议是一种允许一个应用程序或组件去控制另一个应用程序或组件的协议,VB和MATLAB都支持ActiveX自动化协议。通过自动化协议,可以在VB应用程序中执行MATLAB命令,并从的MATLAB工作空间中获取数据以及向MATLAB输送数据从

3、而实现数据的交互。要实现这种功能,用户首先必须获得Matlab ActiveX对象在系统注册表中定义的名字Matlab.Application。,在VB程序中要添加如下的代码: Dim Matlab as ObjectSet Set Matlab = CreateObject(“Matlab.Application”) Matlab.execute (Strcommand) VB可执行一条由Strcommand字符串决定的Matlab指令或在Matlab的工作空间调用M函数文件,在屏幕上显示图形或计算结果。,Dim Matlab As Object Private Sub Form_Load(

4、) Set Matlab = CreateObject(“matlab.application“) End Sub Private Sub Command1_Click() Dim strcommand As String strcommand = “x=0:0.01:2*pi;y=sin(x);plot(x,y)“ Matlab.execute (strcommand) End Sub Private Sub Command2_Click() Matlab.execute (“close gcf“) End Sub,Dim Matlab As Object Private Sub Form_

5、Load() Set Matlab = CreateObject(“matlab.application“) End Sub Private Sub Command1_Click() Dim strcommand As String strcommand = “x=0:0.01:2*pi;y=sin(x);set(gcf,Visible,off);“ strcommand = strcommand + “plot(x,y);print -dmeta;close(gcf);“ Matlab.execute (strcommand) Picture1.Picture = Clipboard.Get

6、Data() End Sub Private Sub Command2_Click() Picture1 = Nothing End Sub,利用ActiveX进行VB和Matlab的交互通信时,所采用的Matlab语句是直接使用Matlab提供的函数和图形库命令。该方法编程效率高,但程序的执行必须在Matlab环境下,这样会占用内存,使程序的执行速度受一定影响。,二、动态链接库(DLL),借助Visual C+与MATLAB的接口,将MATLAB的程序(.M)文件编译为动态链接库(.DLL) COM组件,VB可以通过调用DLL实现对Matlab的调用。这种方法脱离了MATLAB环境,在算法上

7、采用C+语句,所以运行速度较快,可应用于实时运算。通过这种方法可以发布成脱离MATLAB和VB的安装软件,在其他没有安装MATLAB和VB软件的计算机上都能运行。,实现步骤(一) Matlab7.1 版 1、开发环境: Visual Studio 6.0 Matlab7.1安装路径不能有空格或中文 2、编写m文件 (注:m文件必须为m函数,不能是脚本文件),function plotcur x=0:0.01:2*pi; y=sin(x); set(gcf,visible,off); plot(y) print -dmeta; close(gcf);,3、生成COM组件 (1)设置系统路径 我的

8、电脑属性 高级 环境变量 系统变量 Path选项,增加以下路径:,头文件:C:/MATLAB7/extern/include; 库:C:/MATLAB7/extern/lib/win32/microsoft/msvc60; DLL:C:/MATLAB7/bin/win32 C:为自己实际的MatlAB安装目录,(2)安装C+编译器 在MATLAB命令窗口里输入:mbuild setup命令 Please choose your compiler for building standalone MATLAB applications: Would you like mbuild to locat

9、e installed compilers y/n? n 有个让选y/n的matlab自动定位编译器位置的提示 时要选n , 然后手动指定Microsoft Visual Studio文件夹所在位置,选择安装VC+6.0编译器。,(3)创建COM组件工程 在命令窗口中输入comtool,出现com组件builder。选择FILENew Project选项。 Component name选项中输入组件名称:test (*组件名不能与m文件重名) (4)添加m文件 (5)生成动态链接库 单击build Com Object 在创建的COM工程下会 生成相关的组件。,4、VB中调用动态链接库 (1)

10、注册动态链接库 将生成的COM组件复制到其他位置,运行distrib文件夹中的_install.bat文件注册动态链接库。 (2)创建VB工程 引入COM组件。选择ProjectReference选项,将test_com_1.0 Type Library 选中,编写VB程序代码 Dim Matlab As testCOM.testCOMclass Private Sub Form_Load() Set Matlab = New testCOM.testCOMclass End Sub Private Sub Command1_Click() Call Matlab.plotcur Pictur

11、e1.Picture = Clipboard.GetData() End Sub Private Sub Command2_Click() Picture1 = Nothing End Sub,5、应用程序发布 (1)COM组件打包 在本地使用的话,MATLAB会自动注册 COM组件,无需发布;但如果要在没有安装MATLAB的计算机上使用,安装包就需添加MATLAB运行库MCR。打开创建的COM工程,点击Component Package Component选项,选中Include MCR,点击create。,(2)VB程序发布 filemake project1.exe Add-Ins Ad

12、d-In Manager,点击Package and deployment Wizard,并选中Loaded/unloaded Add-Ins Package and deployment Wizard,按提示进行操作,直至打包发布完成。,*打开生成的安装包中的setup.Lst文件,Bootstrap Files字段里面只保留VB6STKIT.DLL和msvbvm60.dll几个文件,其余的都删掉,否则在不同版本的系统上使用可能会报错。,6、应用程序安装 (1)安装VB应用程序。在要安装的计算机上,新建一个文件夹作为应用程序的安装目录。将打包好的VB程序中的压缩包(.CAB)解压到安装目录中

13、再进行安装。 (2)安装Matlab控件。运行COM组件包中的distrib文件夹下的类名.exe文件,运行过程中全部按“y”覆盖原文件。将安装目录指向VB应用程序安装所在的目录(即VB应用程序与Matlab控件安装在同一个目录下),否则dll文件是没有办法注册的,选择后,全部点击Next,至Matlab Component Runtime安装完成,DOS安装界面也会随后自动关闭。,MATLAB7.1及以前版本生成COM组件的命令是comtool,从R2006a(7.2)开始换成了deploytool。2013b版和2014a版利用deploytool生成COM组件时都会出现如下图所示的错误:

14、,实现步骤(二) Matlab2013a 版,MatlAB2013a版生成COM组件的方法步骤:,1、同MATLAB7.1版安装路径不能有空格或中文,编写m函数文件,选择C/C+编译器 2、在命令窗口运行deploytool。输入project名称,Type选项选择Generic COM Component。,3、为COM组件添加类及类的输出函数,然后点击编译。,编译过程,4、生成自解压安装包 在本地使用的话,MATLAB会自动注册 COM组件,无需发布;但如果要在没有安装MATLAB的计算机上使用,安装包就需添加MATLAB运行库MCR。点击PackageAdd MCR,把Matlab的m文件编译成VB可以执行的.dll文件,执行的效率高,可以实现脱离MATLAB和VB环境而独立运行。但当COM组件一旦编译成功之后,m文件的功能就不能变化,所编程序的数据交换能力弱。,总结,谢谢!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号