VB调用Matlab神经网络工具箱在测绘软件设计中的应用

2011-11-15 03:30王新志丁海勇
测绘通报 2011年11期
关键词:工具箱调用引擎

王新志,曹 爽,丁海勇

(南京信息工程大学遥感学院,江苏南京210044)

VB调用Matlab神经网络工具箱在测绘软件设计中的应用

王新志,曹 爽,丁海勇

(南京信息工程大学遥感学院,江苏南京210044)

运用Matlab引擎技术,实现VB调用Matlab神经网络工具箱进行测绘软件设计,集成后的软件能够充分发挥两种语言的优势。并以基于BP神经网络的GPS高程转换软件设计为例,介绍VB调用Matlab及VB编写主界面的详细步骤。

VB;Matlab;神经网络工具箱;测绘软件

一、引 言

自20世纪80年代末以来,神经网络这个涉及多种学科的高新科技领域,吸引了众多的数理科学家、工程师等对其进行研究与应用。神经网络在测绘研究的众多方面都有广泛的应用,如GPS高程转换[1]、遥感图像分析与处理[2]、路基沉降预测[3]等。然而,由于神经网络种类繁多,常用的有BP神经网络,RBF神经网络、Hopfield神经网络等,并且神经网络层数及每层神经元较多,加上输入矢量的组数庞大,使得采用一般的程序设计神经网络时往往容易出现循环套循环的复杂嵌套程序,从而使得程序设计既费时,又不易调通,将大量的时间浪费在程序编写与调试中而无暇顾及如何设计出具有更好性能的网络。

Matlab是一款强大的工程计算和仿真软件,它集数值计算、信号处理和图形分析等功能于一体,被称为演算纸式的语言。它强大的功能为各领域的应用提供了基础,已经从最初的矩阵实验室渗透到科学与工程计算的多个领域,如工程计算、数值分析、信号处理、自动控制等[4]。其中的神经网络功能提供了大量可直接调用的函数和命令,用Matlab来编写各种网络设计与训练的子程序,可以使神经网络设计者从繁琐的编程中解脱出来,集中精力去思考和解决问题,从而能大大提高效率。然而Matlab也有不足,它的界面编写功能相对来说简单、粗糙。

Visual Basic(VB)是面向对象的可视化编程语言,它为用户提供了可视化的面向对象与事件驱动的程序设计集成开发环境,使得程序设计变得极其快捷、方便,用户无需设计大量的程序代码,便可设计出使用的应用系统[5]。VB的图形界面编程能力强大,菜单、工具条、快捷方式等实现起来很简单。如果能将Matlab强大的神经网络工具箱功能与VB在图形用户界面开发方面的优势结合起来,实现VB与Matlab的无缝集成,对于有效缩短神经网络算法相关软件的开发周期,优化软件系统性能具有十分重要的意义。

二、Matlab引擎技术及VB调用Matlab神经网络工具箱的实现方法

1.Matlab引擎技术

Matlab引擎函数库是Matlab提供的一系列程序的集合,它允许用户在自己的应用程序中对Matlab函数进行调用,将Matlab作为一个计算引擎使用,让其在后台运行。当用户使用Matlab引擎时,相当于在后台启动了一个Matlab进程。Matlab引擎函数在用户程序与Matlab进程之间起一个桥梁的作用,它完成两者的数据交换和命令的传递。在Windows环境中Matlab引擎是通过ActiveX来完成的。而ActiveX是由Microsoft制定的一种独立于编程语言的组件集成协议,它不受开发环境的限制,并且ActiveX控件能够在不同的环境中使用,包括VC、VB、C++builder等[6]。

在VB编程环境下通过ActiveX自动化接口可将 Matlab作为 VB语言的一个 ActiveX部件调用[7]。

2.VB调用Matlab神经网络工具箱的实现方法

Matlab ActiveX的功能主要包括在Matlab工作空间执行Matlab命令以及直接从工作空间存取矩阵等,Matlab提供了一些可以在Matlab或VB中使用的函数,来实现相应的功能[7]。常用的函数主要有:

1)Execute(Command as String):调用Matlab来执行一条Matlab命令,同时返回一个字符串表示命令的执行情况。任何能在Matlab中执行的命令都可以被包括在Command字符串中。具体格式为

其中,BSTR表示字符串类型,它与VB存储字符串所采用的数据格式相同。

2)GetFullMatrix:用来将Matlab的一个矩阵变量传递到VB程序的一个一维或二维数组中。具体格式为

其中,BSTR表示字符串类型;Name指Matlab中的矩阵名;Workspace指矩阵所在的工作空间,当Workspace为base时,表示在Matlab的工作空间操作;pr和pi分别是数组的实部和虚部,为双精度数据类型。

3)PutFullMatrix:用来将VB程序的一个一维或二维数组传递到Matlab的一个矩阵变量中。具体格式为

其中,参数含义与GetFullMatrix类似。

4)MinimizeCommandWindow:用来使Matlab命令窗口最小化。具体格式为

5)Quit:关闭Matlab服务器。

VB利用Matlab引擎技术实现神经网络工具箱调用的过程如图1所示。

图1 VB利用Matlab引擎技术实现神经网络工具箱的调用过程

三、基于BP神经网络的GPS高程转换软件的设计与应用

Matlab神经网络工具箱提供了多种神经网络,针对不同的问题,首先要选择适合的神经网络,根据样本数据确定神经网络的输入向量与输出向量,并利用样本数据对网络进行训练;然后通过比较分析,寻找收敛效果较好的隐含层层数、神经元数及各层激活函数、训练函数;各参数确定之后,为了方便使用,一般将其保存起来,一并存入M文件中。

1.BP神经网络与Matlab神经网络工具箱函数

BP(back propagation)神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和达到最小。

Matlab神经网络工具箱是以神经网络理论为基础,用Matlab语言构造出的典型神经网络工具函数。Matlab神经网络工具箱中含有大量与BP神经网络有关的函数,这些函数为BP神经网络的应用研究提供了强有力的工具。本文中用到的与BP神经网络有关的工具箱函数有[8]:

1)newff():BP神经网络创建函数,用于建立一个BP神经网络。

2)train():神经网络训练函数,用于训练建立的BP神经网络。

3)sim():神经网络仿真函数,用于对训练后的BP神经网络进行仿真。

4)tansig()、purelin():神经元传递函数,又称激活函数。tansig为双曲正切S型(sigmoid)传递函数,利用BP算法训练隐层神经元时经常采用它; purelin()为线性传递函数,利用BP算法训练输出层神经元时经常采用它。

5)trainlm():BP网络训练函数,该函数采用L-M优化算法。

2.Matlab中编写M函数及优化

神经网络在Matlab中实现的步骤如图2所示。

图2 神经网络在Matlab中实现的步骤

在Matlab M-fite Editor中编辑BP神经网络的实现过程。主要代码如下

其中,Bp_Net为函数名称;Bp_Net(R1,R2,R3,R4,R5,R6,R7)括号内为输入参数,R1为隐含层神经元数,R2为输出层神经元数,R3为训练样本个数,R4为检验样本个数,R5为最大循环步数,R6为网络性能参数,R7为两次显示之间的训练步数;[Z,ey,zwch]中括号内是输出参数,Z为转换后GPS高程值,ey为转换后GPS高程误差值,zwch为转换结果的中误差值。主要代码如下

为了提高软件的运算速度,需要对设计的M函数进行一些优化。

1)编写的M文件名必须与利用function定义的Matlab函数相同,否则将无法在VB程序实现函数的调用。

2)程序中的变量要有明确定义。Matlab的M程序并不要求预定义变量,Matlab默认所有的变量都是矩阵,对这些没有定义维数的矩阵编译起来速度较慢,如果预定义变量的类型和维数,则可大大加快编译的速度。

3)尽量减少循环的使用。循环在整个程序中耗时较多,要尽量利用Matlab中函数和矩阵的操作运算优势,以减少循环的使用。

3.VB中的程序设计

在VB下建立一个新窗口,在其上添加相关控件,设计程序运行界面如图3所示。

图3 程序运行界面

其中,文本框控件有7个,名称为Text1、Text2、…、Text7,用来实现相关参数输入功能;按钮控件一个,名称为Command 1,用来实现执行程序代码的功能;高级文本框控件一个,名称为RichTextBox1,用来输出程序的处理结果。主要代码如下

该GPS高程转换系统主要用于厦门集美大桥区域GPS高程转换,系统界面如图3所示。主要采用BP神经网络算法,采用的样本数据共26个点,分为两部分,训练样本含15个点,用于训练BP网络;检验样本11个点,用于检验网络的仿真精度。经过比较、分析,网络具体设置为输入层神经元数为2,输入向量为GPS水准点的X、Y坐标;隐含层神经元数为20;输出层神经元数为1,为GPS高程异常。通过该系统,可以方便地实现该区域内GPS大地高到正常高的快速、高精度转换,同时可避免繁琐的算法设计过程。

四、结束语

本文详细论述了如何利用Matlab引擎技术实现VB调用Matlab神经网络工具箱进行测绘软件设计,并通过具体例子演示了软件设计的详细过程。经实例验证,使用VB编写程序主界面,调用Matlab神经网络工具箱,能充分发挥VB编程灵活、界面友好等优点,同时能高效地利用Matlab强大、丰富的工具箱,降低了开发工作的复杂度,使软件开发过程更简单快速。

[1] WANG Xinzhi,CHEN Wei,SUN Jingling.Application of the RBF Neural Network for GPS Height Fitting in Linear Project[C]∥Proceedings of the 2010 International Conference on Application of Mathematics and Physics.London:World Academic Union,2010.

[2] 李艳玲.人工神经网络在遥感图像分析与处理中的应用[J].黑龙江科技信息,2009(23):23.

[3] 尹珺,邵黎霞,樊琨.带调控器人工神经网络的软土路基沉降预测[J].测绘通报,2007(9):17-19.

[4] 杨志强,路晓峰.基于COM的Matlab和C++Builder在测量软件开发中的应用[J].测绘科学,2007,32(3):184-185.

[5] 李雁翎.Visual Basic程序设计[M].北京:清华大学出版社,2007.

[6] 黄一丹,严洪森,冯丽娟,等.基于C#.NET与Matlab接口和BP网络的汽车产量预测[J].计算机技术与发展,2008,18(11):36-40.

[7] 王耀龙,梁小冰,黄萍.Visual Basic.NET调用Matlab神经网络工具箱的实现方法[J].现代计算机,2005,203(1):78-84.

[8] 飞思科技产品研发中心.神经网络理论与Matlab 7实现[M].北京:电子工业出版社,2005.

Application of Method of Calling Matlab Neural Network Toolbox in VB to Surveying Software Design

WANG Xinzhi,CAO Shuang,DING Haiyong

0494-0911(2011)11-0059-04

P209

B

2010-10-25

王新志(1981—),男,湖南郑州人,硕士,助教,主要从事GPS数据处理及应用方面的研究工作。

猜你喜欢
工具箱调用引擎
核电项目物项调用管理的应用研究
会“叫”的工具箱和工具
LabWindows/CVI下基于ActiveX技术的Excel调用
基于MATLAB优化工具箱优化西洋参总皂苷提取工艺
蓝谷: “涉蓝”新引擎
机械加工机床工具箱的优化设计
基于系统调用的恶意软件检测技术研究
无形的引擎
基于Cocos2d引擎的PuzzleGame开发
利用RFC技术实现SAP系统接口通信