VB与Matlab混合编程探讨.pdf
《VB与Matlab混合编程探讨.pdf》由会员分享,可在线阅读,更多相关《VB与Matlab混合编程探讨.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VB与Matlab混合编程探讨冯 莉,李 巨,邓云华,李玺钦,王 兰(中国工程物理研究院流体物理研究所107室,四川绵阳 621900)摘 要:介绍了VB与Matlab混合编程的方法。充分利用VB编程简洁、开发界面友好等特点和MATLAB强大的数据计算和分析、图形处理功能,开发出复杂的、界面友好人机交互处理软件。关键词:Matlab;VB;ActiveX;混合编程1 引 言 在开发数据采集分析软件时,有时需要对采集的数据信息进行处理、计算以及对分析结果进行实时、直观的图形化显示。Matlab是集数值分析、矩阵运算、信号处理和图形显示于一体的高性能数学软件。VB在图形用户界面开发方面有很强的优势
2、。利用VB开发数据采集系统应用界面,调用Matlab编写的数据处理子程序,可实现应用系统的快速开发。下面讨论VB调用Matlab的几种方法。2 调用方法211 利用ActiveX技术1 由于Matlab支持ActiveX服务器端协议,因此,通过建立VB与Matlab之间的ActiveX自动化连接,实现在VB应用程序中调用Matlab。在VB中使用Matlab=createobject(“matlab.application”)创立Matlab的ActiveX对象,其中Matlab.Application是Matlab的ActiveX对象在Windows注册表中的名称。在创建Matlab的Act
3、iveX对象后,就可以使用这个对象的各种方法来调用Matlab了。Matlab.Application包含以下几个主要方法。(1)BSTR Execute(Command as string);执行Execute方法将调用Matlab执行一条Command字符串的Matlab命令,同时以字符串的形式返回命令的结果。(2)GetFullMatrix(in BSTR Name,in BSTR Workspace,in SAFEARRA Y(double)pr,in SAFEARRA Y(double)pi);此方法将指定的Matlab工作空间中的一个一维或二维数组送到VB程序中,Name指定了Ma
4、tlab中的矩阵变量名,WorkSpace指定了该矩阵所在的工作空间,pr和pi分别是数组的实部和虚部。(3)PutFullMatrix(in BSTR Name,2005年9月 爆 轰 波 与 冲 击 波 第3期in BSTR Workspace,in SAFEARRA Y(double)pr,in SAFEARRA Y(double)pi);此方法将VB程序中的一个一维或二维数组传送到指定的Matlab工作空间中。(4)MinimizeCommandWindow方法,用于使Matlab命令行窗口最小化。(5)MaximizeCommandWindow方法,用于使Matlab命令行窗口最大化
5、。在利用Matlab作为ActiveX自动化服务器时,VB应用程序将自动启动Matlab的Ac2tiveX自动化服务程序,并在程序执行完成后自动关闭ActiveX自动化服务程序。以计算一组温度对电阻的积分为例说明在VB中利用ActiveX自动化接口,使用上述方法后编程。把采集到的温度和电阻保存到数据文本文件(d:WDZ.dat)中;在命令字中,将温度值存放到X矩阵中,电阻值放在Y矩阵,积分值Z在VB界面的文本框IntegralText中显示。在命令按钮Command1编写源码如下:Private Sub Command1_Click()Dim z(1 To 1)As DoubleDim I()
6、As DoubleDim TempValue asDoubleSet Matlab=CreateObject(Matlab.Application)初始化对象Matlab.Execute(load d:WDZ.dat;y=WDZ(:,2);x=WDZ(:,1);z=rapz(x,y);)Call Matlab.GetFullMatrix(z,base,z,I)For j=1 To 1TempValue=z(j)NextIntegralText=Str(TempValue)Call Matlab.quitSet Matlab=NothingEnd Sub212 应用DDE与Matlab通讯2DD
7、E(Dynamic Data Exchange)允许Microsoft Windows应用程序通过交换数据实现彼此间的通信。应用程序间通过建立一个DDE会话相互通信,发起会话的应用程序叫客户端(Client),对Client端作出响应的应用程序被称为服务器(Server)。图1描述了Matlab作为图1Matlab作为DDE服务器应用服务器时与其他应用程序的通信机制。其中,DDE功能函数既可以由应用程序提供,也可以由Matlab引擎库提供,初始化会话时,客户端应用程序必须指定两个参数service name(服务器应用程序的名称)和topic(会话主题)。就上述例子,说明VB与Matlab建立
8、连接,完成DDE会话的全过程。程序首先启动701 第3期 冯 莉 等:VB与Matlab混合编程探讨Matlab,设置TextInput是输入文本框,TextOutput是输出文本框。在TextInput中输入Matlab命令(load d:WDZ.dat;y=WDZ(:,2);x=WDZ(:,1);z=trapz(x,y);z)回车后,由Matlab在后台执行并将结果返回给TextOutput显示。Private Sub Form_Load()Dim id As Stringid=Shell(d:matlab bin matlab.exe/automation,6)启动MATLABForm1
9、.SetFocusEnd SubPrivate Sub Command2_Click()Textinput.LinkMode=vbLinkNoneTextinput.LinkTopic=MATLAB|EngineTextinput.LinkItem=EngEvalStringTextinput.LinkMode=vbLinkManualszCommand=Textinput.Text执行Matlab命令Textinput.LinkExecute szCommandTextinput.LinkMode=vbLinkNone初始化TextOutput与Matlab间的DDE会话TextOutput
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB Matlab 混合 编程 探讨
限制150内