VB与Matlab混合编程探讨.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:5 大小:211KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

VB与Matlab混合编程探讨.pdf

VB与Matlab混合编程探讨.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

2005年9月爆轰波与冲击波第3期VB与Matlab混合编程探讨冯莉,李巨,邓云华,李玺钦,王兰(中国工程物理研究院流体物理研究所107室,四川绵阳621900)摘要:介绍了VB与Matlab混合编程的方法。充分利用VB编程简洁、开发界面友好等特点和MATLAB强大的数据计算和分析、图形处理功能,开发出复杂的、界面友好人机交互处理软件。关键词:Matlab;VB;ActiveX;混合编程1引言在开发数据采集分析软件时,有时需要对采集的数据信息进行处理、计算以及对分析结果进行实时、直观的图形化显示。Matlab是集数值分析、矩阵运算、信号处理和图形显示于一体的高性能数学软件。VB在图形用户界面开发方面有很强的优势。利用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的ActiveX对象后,就可以使用这个对象的各种方法来调用Matlab了。Matlab.Application包含以下几个主要方法。(1)BSTRExecute(Commandasstring);执行Execute方法将调用Matlab执行一条Command字符串的Matlab命令,同时以字符串的形式返回命令的结果。(2)GetFullMatrix([in]BSTRName,[in]BSTRWorkspace,[in]SAFEARRAY(double)pr,[in]SAFEARRAY(double)pi);此方法将指定的Matlab工作空间中的一个一维或二维数组送到VB程序中,Name指定了Matlab中的矩阵变量名,WorkSpace指定了该矩阵所在的工作空间,pr和pi分别是数组的实部和虚部。(3)PutFullMatrix([in]BSTRName,第3期冯莉等:VB与Matlab混合编程探讨107[in]BSTRWorkspace,[in]SAFEARRAY(double)pr,[in]SAFEARRAY(double)pi);此方法将VB程序中的一个一维或二维数组传送到指定的Matlab工作空间中。(4)MinimizeCommandWindow方法,用于使Matlab命令行窗口最小化。(5)MaximizeCommandWindow方法,用于使Matlab命令行窗口最大化。在利用Matlab作为ActiveX自动化服务器时,VB应用程序将自动启动Matlab的Ac2tiveX自动化服务程序,并在程序执行完成后自动关闭ActiveX自动化服务程序。以计算一组温度对电阻的积分为例说明在VB中利用ActiveX自动化接口,使用上述方法后编程。把采集到的温度和电阻保存到数据文本文件(d:\WDZ.dat)中;在命令字中,将温度值存放到X矩阵中,电阻值放在Y矩阵,积分值Z在VB界面的文本框IntegralText中显示。在命令按钮Command1编写源码如下:PrivateSubCommand1_Click()Dimz(1To1)AsDoubleDimI()AsDoubleDimTempValueasDoubleSetMatlab=CreateObject("Matlab.Application")'初始化对象Matlab.Execute("loadd:\WDZ.dat;y=WDZ(:,2);x=WDZ(:,1);z=rapz(x,y);")CallMatlab.GetFullMatrix("z","base",z,I)Forj=1To1TempValue=z(j)NextIntegralText=Str(TempValue)CallMatlab.quitSetMatlab=NothingEndSub212应用DDE与Matlab通讯[2]DDE(DynamicDataExchange)允许MicrosoftWindows应用程序通过交换数据实现彼此间的通信。应用程序间通过建立一个DDE会话相互通信,发起会话的应用程序叫客户端(Client),对Client端作出响应的应用程序被称为服务器(Serv