的图形用户界面GUI.ppt
控制系统仿真-基于MATLAB语言,主讲教师:张磊中国海洋大学 工程学院,2023/8/30,本次课程的主要内容1、MATLAB的图形用户界面GUI 1.1什么是GUI?1.2MATIAB的GUIDE开发环境 1.3回调函数及示例2、复杂系统仿真概述 2.1复杂系统建模 2.2三维仿真软件OpenGL开发环境 2.3基于OpenGL的复杂系统仿真实例,9 MATLAB的图形用户界面GUI,1.1.什么是GUI?,主要内容:GUI开发环境GUI界面的创建,交互组件GUI菜单和存储句柄图形对象-回调函数,GUI(Graphical User Interface)图形用户界面,是在图形界面下安排显示与用户交互的组件元素,用户可以只通过键盘、鼠标和前台界面下的组件发生交互,而所有的计算、绘图等内部操作都封装在内部,提高了终端用户使用MATLAB程序的易用性。,9 MATLAB的图形用户界面GUI,1.2.GUIDE开发环境,MATLAB主菜单-file-new-GUI,GUIDE操作演示,9 MATLAB的图形用户界面GUI,GUI界面的创建,交互组件,1、按钮2、海绵按钮3、下拉菜单4、单选按钮5、复选框6、文本框7、文本标签8、滑动条9、下拉列表框10、坐标轴,9 MATLAB的图形用户界面GUI,组件属性设置和排列,9 MATLAB的图形用户界面GUI,GUI菜单和存储,1、页面菜单2、右键弹出菜单,9 MATLAB的图形用户界面GUI,GUI菜单和存储,1、二进制的.fig文件,保存GUI界面的组件、菜单的相关属性2、.m文件,保存GUI特定响应事件的函数,实际操作示例,9 MATLAB的图形用户界面GUI,1.3回调函数,9 MATLAB的图形用户界面GUI,1.3.回调函数,%-Executes on button press in togglebutton1.function togglebutton1_Callback(hObject,eventdata,handles)%hObject handle to togglebutton1(see GCBO)%eventdata reserved-to be defined in a future version of MATLAB%handles structure with handles and user data(see GUIDATA)%Hint:get(hObject,Value)returns toggle state of togglebutton1num=5;den=1,5,4,0;numa,dena=cloop(num,den);y,t=step(numa,dena)set(gcf,CurrentAxes,findobj(gcf,Type,Axes)plot(y)grid,回调函数操作演示,例:,9 MATLAB的图形用户界面GUI,1、使用简易绘图函数ezsurf(绘制)3三维图形2、使用shading实现3种绘制模式的切换(flat:片块模式,faceted:切面模式,interp:彩色模式)3、设置绘制和清空按钮4、设置简单菜单项完成绘制、清空和关闭命令,用户界面设计演示,9 MATLAB的图形用户界面GUI,6.句柄图形对象,1)、三种模式之间相互切换:具有排他性,2)、根据1)的模式定义设置绘图命令,3)、清空绘图区,4)、设置菜单命令,9 MATLAB的图形用户界面GUI,6.句柄图形对象,set(hObject,Value,get(hObject,Max)set(findobj(gcf,Tag,radiobutton2),Value,get(findobj(gcf,Tag,radiobutton1),Min)set(findobj(gcf,Tag,radiobutton3),Value,get(findobj(gcf,Tag,radiobutton2),Min),set(hObject,Value,get(hObject,Max)set(findobj(gcf,Tag,radiobutton1),Value,get(findobj(gcf,Tag,radiobutton1),Min)set(findobj(gcf,Tag,radiobutton3),Value,get(findobj(gcf,Tag,radiobutton2),Min),set(hObject,Value,get(hObject,Max)set(findobj(gcf,Tag,radiobutton1),Value,get(findobj(gcf,Tag,radiobutton1),Min)set(findobj(gcf,Tag,radiobutton2),Value,get(findobj(gcf,Tag,radiobutton2),Min),单选按钮1,单选按钮2,单选按钮3,9 MATLAB的图形用户界面GUI,6.句柄图形对象,hrf=findobj(gcf,Tag,radiobutton1);hri=findobj(gcf,Tag,radiobutton2);hrc=findobj(gcf,Tag,radiobutton3);set(gcf,CurrentAxes,findobj(gcf,Type,Axes)ezsurf(peaks)if(get(hrf,Value)=get(hrf,Max)shading flatelseif(get(hri,Value)=get(hri,Max)shading faceted elseif(get(hrc,Value)=get(hrc,Max)shading interpend,cla%清空绘图区,绘图按钮,清空按钮,9 MATLAB的图形用户界面GUI,6.句柄图形对象,pushbutton1_Callback,cla%清空绘图区,菜单项绘图,菜单项清空,close%清空绘图区,菜单项关闭,回调函数设置演示,10 复杂系统仿真概述,1.概述(复杂系统建模总框架),先验知识,演绎分析,模型构造,可信性分析,最终模型,目标协调,归纳程序,目的,数据,10 复杂系统仿真概述,1.概述(一般系统仿真流程),2.三维仿真软件OpenGL开发环境,OPENGL(Open Graphics Language,开放式的图形语言)SGI公司开发的一个多用途跨平台的图形应用程序编程接口(API)可以在任意操作系统上运行。基本特点:工业标准,可靠性高(硬件要求低),可扩展性(提供了较多的工具包),方便易用(核心图形函数功能强大)主要操作:绘制物体,图形变换,光照处理,着色,三维图形融合,纹理映射,动画,10 复杂系统仿真概述,2.三维仿真软件OpenGL开发环境,INCLUDE 里包含着所有用的头文件,里面定义了我们在程序中用到的各种函数。MAIN.C 源程序是入口程序,程序从这里开始。LAYER-B 文件夹包含了描述步态与路径的源程序,MYLIB 中描述了我们在程序中用到的一些计算公式如计算三角形面积的公式等,POSTURE 中是有关四足位置姿态的描述,SYSTEM 中包括初始化的程序,10 复杂系统仿真概述,3.基于OpenGL的复杂系统仿真实例,A.建立仿真模型1、坐标系2、模型尺寸3、各关节的位置4、比例关系5、足先位置和关节角度的关系.设置控制页面进行交互,10 复杂系统仿真概述,10 复杂系统仿真概述,例:描绘四足机器人红色关节部分的函数void DrawLink1(void)GLfloat mat_ambient=0.5,0.2,0.2,1.0;GLfloat mat_diffuse=0.5,0.2,0.2,1.0;GLfloat mat_specular=5.0,1.0,1.0,1.0;GLfloat mat_shininess=50.0;glPushMatrix();glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mat_ambient);glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mat_diffuse);glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT_AND_BACK,GL_SHININESS,mat_shininess);MySolidCylinder(SHOULDER_RADIUS,BODY_HEIGHT);开始的四个数组建立了环境光,漫反射光和镜面光的反射值的数据,这里的显示效果为红色。glPushMatrix()函数的作用是让记住程序现在所在位置,接着调用glMaterialfv()函数定义物体正反面的材质属性。然后调用绘制圆柱体的函数MySolidCylinder()绘制该关节部分.,3.基于OpenGL的复杂系统仿真实例,10 复杂系统仿真概述,B.程序设计及实验,3.基于OpenGL的复杂系统仿真实例,10 复杂系统仿真概述,C.结果分析,练习1:参考课件的实例练习使用MATLAB的图形用户界面GUI。,课堂练习,