基于MATLAB的BP神经网络控制器的设计及其实验仿真

中原工学院毕业设计(论文)

4.3.2 图形用户界面实现的功能

在智能控制虚拟实验室中,MATLAB的图形用户界面(GUI)的主要功能是建立一个友好快捷的用户界面,整合实验的相关部分,方便用户对实验的操作和控制。以控制GUI界面的设计为例,其实现的主要功能如下[18]:

1.加入实验指导,通过单击“实验指导”或“浏览源程序”按钮,可以打开一个Word文档,查看实验的目的和具体的操作步骤或源程序。

2.建立与VRML的连接,单击“浏览实验装置”按钮,用户可以方便的对虚拟实验装置浏览观看。

3.建立BP神经网络控制器,通过单击“查看曲线”按钮用户可以对仿真图进行查看及对比。

4.点击“清空曲线”按钮可将曲线清除。 4.3.3图形用户界面的实现过程 GUI实现的功能及实现过程:

1.打开Word文档改成查看源程序及实验指导

实现与word文档的交互,制作按钮,单击可以直接打开实验指导书。通过GUI的按钮设计达到此要求。

在GUI界面中,加入实验指导按钮,通过对其单击,打开一个Word文档对实验进行说明是非常必要的,用户通过查看实验指导,可以明确实验的目的和意义,了解实验步骤,方便用户进行实验。

通过M文件与Word文档进行交互,首先需要建立一个word文档对实验进行说明,文件命名为1.doc。创建好word文档后,可通过MATLAB中的winopen语句打开word文档。通过以下语句可以创建一个实验指导按钮打开实验指导:

function pushbutton1_Callback(hObject, eventdata, handles) winopen('F:\\学习\\毕业设计\\李慧慧\\论文\\1.doc') 2.建立与VRML的交互

虚拟现实工具箱(Virtua1 Rea1ity Toolbox)为能在一个三维虚拟现实环境中进行可视化操作和与动态系统进行交互提供了一种有效的解决方案[19]。使用标准的VRML技术,就可以通过MATLAB生成三维场景,在MATLAB的命令窗口中直接输入命令或使用M文件来控制虚拟世界。

本次我选用M文件来设计控制VR,这样实现起来相对简单。也可构成总体性。

34

中原工学院毕业设计(论文)

虚拟现实工具箱中的对象分为vrworld对象、vrnode对象和vrfigure对象三种。vrworld对象是虚拟场景的句柄。表4-1为vrworld对象的方法。通过这些方法,可以与场景交互并控制场景。vrnode对象是VRML节点的句柄。vrnode对象是vrworld对象的子对象。vrfigure对象是虚拟现实工具箱查看器的句柄,通过它,可以获取和设置查看器的属性。

方法 vrworld vrworld/close vrworld/delete vrworld/open vrworld/save vrworld/view vrworld/get vrworld/set vrworld/reloand 描述 创建一个虚拟世界相关的vrworld新对象 关闭虚拟对象 从内存中删除虚拟世界 打开虚拟世界 从虚拟世界写到VRML文件 查看虚拟世界 读取vrworld对象的属性值 改变vrworld对象的属性值 从相关vrml文件中重新载入虚拟世界 表4-1 vrworld对象的方法

安装虚拟现实工具箱时,将虚拟现实工具箱提供的VRML查看器设置为默认查看器。虚拟世界显示在主窗口中,利用窗口下方的各种按钮可以进行平移、旋转等操作。在窗口上方的菜单栏中,可以设置显示哪个虚拟世界、控制面板的显示方式、场景漫游的方法和渲染方式等。

通过M文件与虚拟世界进行交互以前,首先需要创建vrworld对象。不能直接与虚拟世界交互。虚拟世界在VRML文件中定义,文件名为biaoti.wrl。创建虚拟世界后,就可以创建一个vrworld对象。其完整的创建语句为:

shiyan=vrworld('biaoti.wrl');

创建完vrworld对象以后,需要打开虚拟世界,其目的是为了可以在VRML查看器中查看虚拟世界,扫描它的结构并从MATLAB命令窗口中改变虚拟世界的属性。打开与虚拟世界biaoti.wrl连接的vrworld对象的语句为:

open(vrml);

在完成了vrworld对象的创建和打开虚拟世界以后,就可以通过view(vrml)语句,用默认的查看器打开和显示虚拟世界biaoti.wrl。将该语句放入“浏览实验装置”按钮中的callback属性中,即实现了点击按钮弹出3D实验装备的效果:

35

中原工学院毕业设计(论文)

function pushbutton10_Callback(hObject, eventdata, handles) vrml= vrworld('biaoti.wrl'); open(vrml); view(vrml)

% hObject handle to pushbutton10 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) 3.查看曲线用M文件回调函数来实现

仿真曲线可以通过GUI中的Axes组件直接在GUI中显示出来,根据预想的要达到的效果:实验者可以同时看到不同输入函数的控制的曲线,我在GUI界面上放置了两组Axes组件。调出曲线的方法仍是通过点击相应的两个按钮来实现。

达到预期效果的重点在于按钮回调函数的编写,我编写这两个回调函数的思想是:将整个仿真过程的代码都放在这两个回调函数中。由于仿真程序中用到的变量数目很多,这样能够避免在不同组件中调用全局变量的麻烦。

选择坐标轴的语句为: axes(handles.axes)

其中handles.axes为指定坐标轴的句柄。这也是利用GUIDE辅助设计GUI的一个好处,所有的交互组件都有一个统一格式的句柄—handles.tag。tag为该交互组件的标签名。利用全命令行的M文件编程则没有这么方便,在调用任何一个交互组件时都需要预先设定其句柄,容易造成混乱。

4.清空曲线是清除所有曲线和输入数据

单击“清空曲线”后,输出的波形和输入数据都在GUI上清除,程序如下: function pushbutton3_Callback(hObject, eventdata, handles) axes(handles.axes1); cla;

axes(handles.axes2); cla;

axes(handles.axes3); cla;

axes(handles.axes4); cla;

36

中原工学院毕业设计(论文)

axes(handles.axes5); cla;

axes(handles.axes6); cla;

axes(handles.axes7); cla;

axes(handles.axes8); cla;

set(handles.edit1,'string',''); set(handles.edit2,'string','');

5.新建一个GUI,在其中用鼠标拖拽的方式添加按钮、动态文本、坐标曲线和文本等。与对应的部件相对应起来,形成完整的可执行GUI。

最终形成的GUI主界面如图4-10所示:

图4-10 GUI界面

4.4系统的封装

这是本次课题的最后一部分。主要功能是要把前面所制作的内容整合封装成一个完整的系统,即做成一个独立的可执行文件,以使用户能够方便的使用智能控制虚拟实验室所提供的虚拟实验服务,实现虚拟实验的各种功能。

4.4.1封装目的

37

联系客服:779662525#qq.com(#替换为@)