Vb和matlab联合编程在测量中的应用探索

时间:2022-10-17 01:15:27

Vb和matlab联合编程在测量中的应用探索

[摘要]本文主要介绍了vb和matlab联合编程技术,并将其运用到测量数据处理过程中,并以实例证明了软件的可靠性。从而将vb与matlab各自优点进行了完美结合,方便了日常测量数据的处理。

[关键字]vb matlab 联合编程 测量

[中图分类号] TP314 [文献码] B [文章编号] 1000-405X(2013)-2-148-2

0 引言

MATLAB作为一种"便笺式"程序设计语言,其强大的数值计算和杰出的绘图功能、大量的函数库和高效简介的编程语言,使其成为非常优秀的数值计算软件。因为测量数据的处理特别是测量平差主要应用矩阵运算,而MATLAB又特别易于做矩阵运算,因此研究开发基于MATLAB的测量平差方法具有极好的应用价值。但是MATLAB若没有实现外部接口,仍有很大的缺陷,最明显的就是matlab的程序文件是M文件,脱离matlab环境无法执行用,而且任何文本编辑文件可以打开编辑M文件,不利于代码的保密。而Visual Basic(简称VB)是微软公司推出的一种可视化的高级程序设计语言,是Windows下简单、易学、高效的可视化软件平台。目前世界上有数以百万计的程序员把它当作首选的编程工具,是一种十分有生命力的Windows编程语言。然而,Basic语言的计算功能十分薄弱,用Basic语言实现复杂的算法工作量十分庞大。如果能利用matlab丰富的外部接口,通过matlab的外部接口,在VB程序中调用matlab函数,将会使VB的缺点得以补充,实现工程软件的迅速开发。

1 VB和MATLAB接口技术简介

(1)ActiveX技术即Automation Server技术。在VB下通过ActiveX自动化接口可将Matlab作为Visual Basic语言的一个ActiveX部件调用。但这种方法最大的缺点是不能脱离MATLAB工作环境。

(2)动态数据交换(DDE)技术。DDE(Dynamic Data Exchange)允许Microsoft Windows应用程序通过交换数据实现彼此间的通信。因此将MATLAB作为服务器端,VB作为客户端进行数据交换实现接口编程。同样这种方法也不能脱离MATLAB工作环境。

(3)可执行文件技术。也就是将MATLAB运算模块做成可执行文件形式,然后在VB中进行调用。但这种方法需要单独开发可执行文件。

(4)利用MatrixVB。MatrixVB是MathWork;针对VB提供的一个Matlab库,它提供了许多函数,包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等。MatrixVB虽然能很容易实现VB和MATLAB接口编程,但需要额外安装MatrixVB,而且函数有限。

(5)COM组件技术。它是利用MATLAB的一个工具MATLAB COM Builder将M函数文件转换成COM组件,然后在VB集成开发环境中直接调用该组件。生成的COM组件是进程内组件,是以DLL的形式存在的。

2 VB和MATLAB无缝可移植编程的实现(COM技术)

2.1 系统要求

(1)MATLAB 6.5;(2)MATLAB Compiler 3.0;(3)MATLAB COM Builder 1.0;(4)Microsoft Visual basic 6.0。

2.2 COM组件创建的步骤

使用MATLAB COM生成器创建一个COM组件完整的过程包括以下五步骤:

(1)载入MATLAB COM生成器。在MATLAB提示行下输入comtool, MATLAB将载入COM生成器。

(2)创建一个新的工程。选择File->New Project,出现工程属性设置对话框。添加组件名、类名、版本号和选择是否连接图形库、生成调试版本号、显示详细编译信息。

(3)管理M文件和MEX文件。载入函数形式的M文件,NI文件中的函数名和类中的方法名相一致。

(4)编译一个工程。选择Build COM Object,生成COM组件(adjustment.dll)。

(5)打包和COM组件。当创建完一个COM组件,并通过测试后,就可以打包和了。打包和的目的是为了能在其他客户端PC上使用COM组件。选择Component->Package Component MATLAB的COM生成器将自动对创建的COM组件进行打包,生成一个与组件同名的自解压EXE文件和一个批处理文件(_install.bat)。

2.3 在VB中调用的COM组件

(1)引入COM组件。在VB集成开发环境中选择工程->引用菜单项。在弹出的引用对话框中选择adjustment 1.0 Type Library。

(2)VB编写。在vb中进行模块设计和代码编写。

4 测量数据处理中应用

作者在matlab中编写水准网参考基准转换程序,并在VB中调用,脱离matlab环境并进行了实例验证水准网参考基准的转换数据采用的为陶本藻教授编著的《自由网平差与变形分析》一书中的算例,其算法和结果完全符合。

转换初始文件采用秩亏自由网平差的平差结果,转换结果如下

(1)经典自由网平差结果:

转换为经典自由网平差结果

固定点为: 1

水准点高程平差值:

(2)拟稳自由网平差结果:

转换为拟稳自由网平差结果

拟稳点为: 1 2

水准点高程平差值:

(3)秩亏自由网平差结果:

转换为秩亏自由网平差结果

水准点高程平差值:

5 结论

通过实践应用证明,借助VB和MATLAB的联合编程技术,可以方便的处理测量中的复杂数据。该方法的主要特点有:

(1)应用程序完全脱离了MATLAB工作环境。

(2)在处理一些复杂的测量数据计算时,可以在matlab中利用matlab的函数或算法进行编写,在VB程序中直接调用,减轻了代码编写难度。

(3)由于将算法程序做成了COM组件的形式,所以实现了算法的保密。

参考文献

[1]刘卫国,陈昭平,张颖.MATLAB程序设计与应用[M].北京:高等教育出版社,2002

[2]陶忠刚等.matlab软件在测量平差中的应用[]].焦作工学院学报,2002, 09:P393-395

[3]阳仁贵,潘小东.用VC++ 6. 0和MATLAB开发测量数据处理系统[]],人民长江,2003,12:P50-52

[4]高剑.Matlab与VB混合编程的两种方法[]].微机发展.2003.3;P90-91.

[5]黄锡泉.基于COM组件的VB与MATLAB接口[]].电脑编程技巧与维护2004.8;P19-21.

上一篇:岩土勘察过程中存在的弊端及对策 下一篇:结合九山湖清淤工程谈土方测量技术及应用