预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

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

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

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的Ac2 tiveX自动化服务程序,并在程序执行完成后自动关闭ActiveX自动化服务程序。 以计算一组温度对电阻的积分为例说明在VB中利用ActiveX自动化接口,使用上述方 法后编程。把采集到的温度和电阻保存到数据文本文件(d:\WDZ.dat)中;在命令字中,将温 度值存放到X矩阵中,电阻值放在Y矩阵,积分值Z在VB界面的文本框IntegralText中显 示。在命令按钮Command1编写源码如下: PrivateSubCommand1_Click() Dimz(1To1)AsDouble DimI()AsDouble DimTempValueasDouble SetMatlab=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=1To1 TempValue=z(j) Next IntegralText=Str(TempValue) CallMatlab.quit SetMatlab=Nothing EndSub 212应用DDE与Matlab通讯[2] DDE(DynamicDataExchange)允许MicrosoftWindows应用程序通过交换数据实现彼 此间的通信。应用程序间通过建立一个DDE会话相互通信,发起会话的应用程序叫客户端 (Client),对Client端作出响应的应用程序被称为服务器(Serv