MATLAB与Visual?Basic

来源:百度文库 编辑:神马文学网 时间:2024/04/28 12:23:12
Visual Basic是Microsoft 公司推出的应用广泛的可视化编程工具,简单易学、功能丰富,而且能够设计出界面优美的应用程序;可视化的用户界面设计功能使程序设计人员摆脱繁琐复杂的界面设计,因而很快就风靡全球。Visual Basic是一种十分强大和有生命力的Windows 编程语言。但是VB语言也有它的缺点,即数值计算方面能力欠佳,因此将其与计算能力强大的MATLAB混合编程将能体现各自的优势,一般的集成方法我们在前面的章节中已有介绍,本章将详细讨论基于MatrixVB的MATLAB与Visual Basic语言的混合编程技术。
本章主要内容如下:
●     VB调用MatrixVB的方法
●     VB与MatrixVB的数据传递机制
●     混合编程应用实例
7.1  MATLAB与Visual Basic
语言的混合编程方式
MATLAB提供了与C/C++、Fortran语言的接口,但没有与Vsiual Basic语言的接口,要想实现MATLAB与Visual Basic的混合编程可以通过以下途径来实现。
1.通过ActiveX方式
一是用Visual Basic开发服务器ActiveX组件,MATLAB作为客户端程序使用,事实上无论是用VB还是VC或者其他语言环境开发的ActiveX组件,对于MATLAB来说集成与调用方式是一样的,一般情况下很容易地将不同环境下开发的用途各异的ActiveX对象集成到一个MATLAB应用中来。其使用方法见第5章关于MATLAB作为ActiveX的客户端使用方法。
二是在VB环境下可以通过ActiveX自动化接口将MATLAB作为Visual Basic语言的一个ActiveX部件调用。MATLAB ActiveX自动化服务的功能主要包括在MATLAB工作空间执行MATLAB命令,以及直接从工作空间存取矩阵等,我们在第5章中关于MATLAB作为服务器组件的部分的例子就是以Visual Basic应用程序,以MATLAB作为服务器客户端的。
2.通过动态链接库方式
该种方式是一种间接调用MATLAB命令的方式,借助于C++与MATLAB的接口,将MATLAB的程序文件(.M文件)编译为动态链接库(.DLL),VB在代码中与调用其他语言编写的DLL文件一样调用MATLAB中.M 文件生成的动态链接库。这种方法可以脱离具体的MATLAB环境,运行效率较高。
3.通过嵌入VB的矩阵函数库MatrixVB的方法
MatrixVB是由第三方(mathtools公司)提供的COM组件,包含了大量与MATLAB相似的函数与调用语法,可以加强VB内建数学运算与图形展示功能,在VB程序代码中可以像使用VB自己的函数一样使用MatrixVB的函数,而且可以不依赖于MATLAB的环境在Visual Basic中完成矩阵运算与图形绘制显示等功能,这种方法使用起来简单,编程效率较高。MatrixVB函数库的功能大致可分为8大类(矩阵运算、运算符重载、图形图像处理、最优化运算、多项式、信号处理、随机与统计分析、控制系统)。
除以上3种方式外,我们还可以通过DDE的方式实现VB与MATLAB的数据通信。
7.2  MatrixVB 环境设置
7.2.1  在VB应用中引入MatrixVB
1.安装MatrixVB
(1) 系统要求为:
●     硬盘空间8.8M以上;
●     操作系统要求Windows 95及其以上版本,或者Windows NT 4.0及其以上版本。
(2) 在安装盘上找到Matrixvb4510.exe,双击后启动安装程序,并按照安装向导安装。
(3) 然后在“开始→运行”菜单中用命令regsvr32 mMatrix.dll注册,如图7-1所示。

图7-1  注册 MatrixVb
2.建立EXE项目
(1) 启动VB开发环境并建立“标准 EXE”项目,如图7-2所示。

图7-2  选择标准EXE工程模板
(2) 单击“打开”按钮,所建立的项目及开发界面如图7-3所示。

图7-3  VB项目及开发界面
3. 为项目引入MatrixVB
在project下拉菜单中单击References,在弹出的对话框中选中MMatrix项目,系统将加载MatrixVB的动态链接库MMatrix.DLL,如图7-4所示。

图7-4  引入MatrixVB的动态链接库
7.2.2  在VB中使用MatrixVB的命令与函数
1.采用立即窗口的形式
在项目中引入MatrixVB库后,在VB中可以直接在开发环境的“立即窗口”中输入MATLAB命令,让VB编译器立即执行,如在MATLAB主窗口中一样。在View下拉菜单的中选择Immediate Windows选项在开发环境中得到“立即窗口”,如图7-5所示。

图7-5  VB中的立即窗口
例如,在“立即窗口”中输入如下命令:
A=eye(4,4)
A.show
命令将产生一个4行4列的单位矩阵,并在MatrixVB的观察窗口Matrix Viewer中显示结果,如图7-6所示。

图7-6  在VB立即窗口中产生矩阵
或者,在“立即窗口”中输入命令:
mesh(peaks(3))
将在MatrixVB的图形窗口Figure1中绘制并显示一个曲面网线图,如图7-7所示。

图7-7  通过立即窗口绘制曲面图
2.在VB程序代码中使用
可以将MatrixVB的函数与命令调用嵌入到VB程序代码中实现相应的功能,其函数与命令的使用方式类似于在MATLAB环境中的使用方式。例如,我们可以将上例中的功能在VB代码中实现,步骤为:

(1) 在上例的主窗口中增加一个按钮,如图7-8所示。
图7-8  为窗口Form1增加按钮
(2) 在按钮的Click事件处理过程中产生一个4行4列单位矩阵并显示,代码如下:
Private Sub Command1_Click()
A = eye(4, 4)
A.Show
End Sub
单击命令按钮运行程序,运行结果如图7-9所示。

图7-9  VB代码中用MatrixVB产生矩阵
同样,在代码中也可以嵌入MatrixVB绘制图形的函数与命令,将该例按钮的Click事件处理过程中的代码进行如下修改。
Private Sub Command1_Click()
mesh(peaks(30))
End Sub
运行结果如图7-10所示。

图7-10  通过嵌入MatrixVB命令绘图
在发布基于MatrixVB的VB应用程序时,应将相应的库文件随系统一起发布。这些文件包括:v4510v.dll、c4510v.dll、ago4510.dll、msvcrt.dll、msvcirt.dll和MMatrix.dll。由于MMatrix.dll是COM 服务器,所以必须在操作系统中注册后方可使用,注册时可使用如下命令行语句:
regsvr32 mMatrix.dll
如果目标操作系统是Windows 95,还必须发布另外两个OpenGL文件即opengl32.dll与glu32.dll,但在其他操作系统如Windows 98/Me/NT 4/2000等环境下,则不需要安装这些文件。