实验五绘图与GUI设计.ppt

上传人:本田雅阁 文档编号:3483116 上传时间:2019-09-01 格式:PPT 页数:37 大小:1.56MB
返回 下载 相关 举报
实验五绘图与GUI设计.ppt_第1页
第1页 / 共37页
实验五绘图与GUI设计.ppt_第2页
第2页 / 共37页
实验五绘图与GUI设计.ppt_第3页
第3页 / 共37页
实验五绘图与GUI设计.ppt_第4页
第4页 / 共37页
实验五绘图与GUI设计.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《实验五绘图与GUI设计.ppt》由会员分享,可在线阅读,更多相关《实验五绘图与GUI设计.ppt(37页珍藏版)》请在三一文库上搜索。

1、Matlab基础应用,1,主讲人:李秀滢 电子信息工程系 ,第五讲 计算可视化与GUI设计,2,一.计算的可视化,MATLAB具有强大的二维和三维绘图功能,尤其擅长于各种科学计算结果的可视化。计算的可视化可以将杂乱的数据通过图形来表示,从中观察出其内在的联系。 二维曲线的绘制 三维图形的绘制 图形窗口的功能,3,1 绘制曲线或曲面的一般步骤,!,!,4,2 二维曲线的绘制,语法: 绘制以y为纵坐标的二维曲线 plot(y) 说明: 1)当y为向量时,系统根据y向量的元素序号自动生成从1开始的向量。 2)当y为m*n的矩阵时,命令为矩阵的每一列画一条曲线。 3)当y为复向量时,命令以实部为横坐标

2、,虚部为纵坐标。 绘制以x为横坐标、y为纵坐标的二维曲线。 plot(x,y) 说明: 1)当x,y都为向量时,x和y长度必须相等。 2)当x为向量、y为矩阵时,则x的长度与矩阵y的行数或列数必须相等。若x长度与y矩阵行数相等,则向量x与矩阵y的每一列向量对应画一条曲线。 3)若x是矩阵,而y是向量,则y长度必须等于x的行数或列数,绘制同前。 4)若x和y都是矩阵,则大小必须相同。矩阵x的每列和y的每列画一条曲线。 绘制多条二维曲线 plot(x1,y1,x2,y2,.) 说明: 每对矩阵(xi,yi)均按前面规则进行解释绘制。,2.1 基本绘图命令,5,2.2 曲线的线型、颜色和数据点形,语

3、法:plot(x,y,s) 说明:s为类型说明字符串参数。它可以是线段类型、颜色和数据点形3种类型符号的组合。,6,2.3 多个图形绘制的方法,指定图形窗口 语法:figure(n) %产生新图形窗口 说明:如果该窗口不存在,则产生新图形窗口并设置为当前窗口。 同一窗口多个子图 语法:subplot(m n k) %使子图中的第k幅成为当前图 说明:将图形窗口划分为m*n幅子图,k是当前子图编号。 同一窗口多次叠绘 语法:hold on %使当前坐标系和图形保留 hold off %使当前坐标系和图形不保留,7,2.4 设置坐标轴和文字标注,坐标轴控制 分格线 语法:grid on/off %

4、显示/不显示分格线 说明:不显示分格线是默认设置,分格线疏密由坐标刻度决定。,8,2.4 设置坐标轴和文字标注(续),文字标注 (1)添加图名 语法:title(s) %书写图名 (2)添加坐标轴名 语法:xlabel(s) %横坐标轴名 ylabel(s) %纵坐标轴名 (3)添加图例 语法:legend(s,pos) %在pos指定位置添加图例注释s (4)添加文字注释 语法:text(xt,yt,s) %在(xt,yt)坐标处添文字注释。,9,例1:绘制sin(x),cos(x)曲线,并添加坐标轴、注释等修饰。,figure(3) x=0:0.1:2*pi; plot(x,sin(x)

5、hold on %保留当前图形 axis(0,2*pi,-1,1) %设置坐标轴的范围 grid on %显示网格 plot(x,cos(x),r-*) title(y1=sin(x),y2=cos(x) %添加标题 xlabel(x) %添加横坐标名 legend(sin(x),cos(x),4) %添加图例 text(pi,sin(pi),x=pi) %在pi,sin(pi)处添加 文字注释,10,3 三维图形绘制,3.1 绘制三维曲线命令,语法: plot3(x,y,z,s) plot3(x1,y1,z1,s1,x2,y2,z2,s2,) 说明:x,y,z是同维向量时,绘制x,y,z为坐

6、标的三维曲线;x,y,z为同维矩阵时,绘制三维曲线的条数等于矩阵的列数。s是指定线型、色彩、数据点形的字符串。 例: x=0:0.1:20*pi; plot3(x,sin(x),cos(x) %按系统默认设置绘图,11,3.2 绘制三维网线图和曲面图,三维网线图与曲面图是三维立体图,MATLAB中提供了mesh和surf命令来绘制。在数据准备上需要使用meshgrid命令构成xy平面上的自变量栅格点矩阵。 产生以x,y向量为基准,x-y平面栅格点坐标值的矩阵 语法:xx,yy=meshgrid(x,y) 三维网线图 语法:mesh(xx,yy,z) 三维曲面图 语法:surf(xx,yy,z)

7、,例2: x=linspace(-3,3,49); y=linspace(-3,3,49); x1,y1=meshgrid(x,y); z=3*(1-x1).2.*exp(-(x1.2)-(y1+1).2) subplot(2,2,1);mesh(x1);title(x1 fig) subplot(2,2,2);mesh(y1);title(y1 fig) subplot(2,2,3);mesh(x1,y1,z);title(mesh fig) subplot(2,2,4);surf(x1,y1,z);title(surf fig),12,3.3 立体图形的控制,网格的隐藏 语法:hidden

8、 off/on %显示/隐藏被遮盖的网格 说明:默认情况下图形后面的网格会被图形遮盖。 改变视角 语法:view(az,el) %通过方位角和俯仰角改变视角。 view(vx,vy,vz) %通过直角坐标改变视角。 曲面镂空 通过将希望镂空的位置用nan来取代矩阵在该部分的数值。 例3:,x,y,z=peaks z(5:20,10:30)=nan surf(x,y,z),13,3.4 色彩的控制,色彩表现在图形中非常重要,MATLAB中非常重视色彩的处理,它提供了丰富的色彩控制命令,同学们课下自学。 色图 色图的显示和处理 如:浓淡处理、亮度处理等。,14,4 特殊图形绘制,15,5 图形窗口

9、的功能,Edit菜单,insert菜单,16,二. GUI(图形用户界面)程序设计,图形用户界面(GUI)程序就是通过窗口、选单、按钮、文字说明等对象构成一个美观的界面,提供用户利用鼠标或键盘方式指挥后台程序实现某些功能。 一个好的GUI能够使程序更加容易使用。它提供给用户一个常见的界面,还提供一些可操作的控件,如按钮、列表框、滑块和菜单等。 创建一个MATLAB图形用户界面程序必须具备以下3个基本元素。 (1)组件 图形化的组件,让用户看到该组件就知道怎样操作。 (2)图形窗口 GUI的每个组件都必须安排在图形窗口中,它像一个摆放各种器 械的容器(画布)。 (3)回应 只要执行GUI的单个图

10、形组件,就必须有一个回应,17,实现GUI程序包括两个基本任务 GUI界面的设计:即GUI的组件布局; GUI组件的编程:编写各组件的响应函数(回调函数) 除此之外,GUI程序也可能需要保存发布,使开发的程序真正得到应用。 MATLAB提供了开发GUI程序的集成开发环境GUIDE,简化设计流程。 在利用GUIDE编写程序时,该开发环境为用户生成两个文件。 FIG文件:该文件包括用户GUI界面的所有组件对象(含图形窗口)及对象的属性。 M文件:该文件包括用户所编写的所有的响应函数(回调函数),或用户定义的子函数。其不包含任何组件的布局信息。 MATLAB的GUI程序的核心就是句柄图形对象的应用,

11、对句柄图形对象的充分了解使GUI程序编写更加容易。,1 GUI程序设计要点,18,2 句柄图形对象,对象,MATLAB是一种面向对象的高级语言,其数据的可视化技术中的各种图形元素,都是抽象的图形对象的实例。 将一个图形的每个组件都看作一个对象,每个对象都有一独一无二的句柄(Handle),句柄是存取图形对象唯一标示。,19,句柄图形体系由若干个图形对象组成:,root(屏幕),figure(窗口),uicontrol(界面控件),axes(轴),uimenu(界面菜单),2.1 句柄图形体系,内核对象,20,图形对象的创建 除了根屏幕外,绝大多数图形对象都由与之同名的命令创建,命令的格式及功能

12、如下:,2.2 句柄图形对象的操作,21,对象句柄的获取 (1)当前对象的获取 语法:gcf %获取当前图形窗口句柄 gca %获取当前坐标轴句柄 gco %获取被鼠标最近单击对象的句柄。 (2)查找对象 语法:findobj %查找对象,获取指定属性值的对象句柄。 (3)追溯父对象和子对象句柄 语法:get %获取已知对象句柄的父/子对象句柄。,2.2 句柄图形对象的操作(续),22,对象句柄的删除 语法:delete(h_obj) %删除句柄对象和所有子对象。 图形对象属性(property)的获取和设置 (1)创建对象时设置属性 如:h_fig=figure(color,red,menu

13、bar,none,position,0,0,300,300) (2)用get函数获取属性值 语法:C=get(h_obj,propertyName,) %获取句柄对象某属性的当前值 (3)用set函数设置属性值 语法:set(h_obj,propertyName,Value,) %设置句柄对象属性值,2.2 句柄图形对象的操作(续),23,2.3 句柄图形对象的操作函数,24,3 图形用户界面(GUI)程序实现,MATLAB设计图形用户界面程序实现的方法有两种: 使用GUI的开发环境(GUIDE,重点掌握) 通过编写程序 实现GUI程序包括两个基本任务 GUI界面的设计:即GUI的组件布局;

14、GUI组件的编程:编写各组件的响应函数(回调函数),25,3.1 图形用户界面(GUI)组成,图形窗口 (figure),菜单 (uimenu),控件 (uicontrol) 按钮 选单按钮 框架 复选框 文本标签 文本编辑框 滑动条 下拉列表框 列表框 单选按钮,坐标轴控件 (axes),下面介绍的是可视化GUI开发环境的应用。,26,3.2 可视化GUI开发环境,27,3.3 创建菜单,在可视化界面窗口选择菜单项“tools”-”Menu Editor”就会出现选单编辑器或点击工具栏中的 。,图 (a)菜单编辑器 图(b)在新窗口创建菜单,3.3.1 菜单编辑器,28,参考句柄图形体系,其

15、中界面选单用“uimenu”命令创建。 语法:h_menu=uimenu(h_Parent,PropertyName,ProperValue,) 说明:h_Parent为选单所在父对象句柄。,3.3.2 编程创建菜单,例2:创建上图(b)所示的选单 h_fig=gcf h_menu=uimenu(h_fig,label,Paint) %创建选单Paint h_menu1=uimenu(h_menu,label,Circle) %创建Paint的子选单Circle h_menu2=uimenu(h_menu,label,Color) %创建Paint的子选单Color h_menu21=uime

16、nu(h_menu2,label,Red) %创建Color子选单Red h_menu22=uimenu(h_menu2,label,Blue) %创建Color子选单Blue,29,3.3.3 菜单的回调函数(callback),回调函数是字符串,可包含任何MATLAB的命令和M文件名,回调的作用是将字符串用“eval”执行,以实现选单的功能。 每个菜单项都会有一个回调函数,用于用户选中菜单项而进行的响应。,30,3.4 控件的使用,控件是界面组成的重要部分。MATLAB常用控件如下表。在“图形对象面板”中选中控件,拖放到“界面编辑面板”中。,31,3.4.1 控件的属性,创建控件后,需要对

17、属性进行设置,常用属性如下。 1)string属性:用于显示在控件上的字符串。 2)enable属性:表示该控件是否有效。 3)tooltipstring属性:当鼠标放在控件上时显示的提示信息。 4)字体属性:包括fontname,fontsize等 5)Tag属性:控件的标记,用于标示控件。 属性编辑器通过选择菜单“View”-”Property Inspector”打开,或选中控件单击工具栏中的 。,32,3.4.2 控件回调函数,每个控件的回调函数可能有多个,用于响应不同的操作事件。 实现GUI程序,基本的机制就是对控件的回调函数编程。 如创建一个“Push Button”控件后,在菜单

18、“View- Object Callbacks”中就会出现如下五个函数。 ButtonDownFcn:当鼠标右键单击控件时执行的函数。 Callback:与控件相关的标准回调函数,实现的功能因控件的不同而不同。 CreateFcn:当创建对象时执行的函数。 DeleteFcn:当删除对象时执行的函数。 KeyPressFcn:当键盘按下时执行的函数。 选择各函数,打开M文件编辑器,出现相关函数名的程序,在各函数中编写程序代码,完成各回调功能。,33,三.动画,MATLAB使科学计算与动画自然结合,实现完美效果。MATLAB中有许多动画程序:如travel、truss、lorenz等。 MATL

19、AB中产生动画的方式有两种: 影片方式:以图像方式预存多个画面,再将这些画面逐帧播放。 对象方式:保持图形窗口中大部分对象,只更新部分运动对象,使整幅图像有运动效果。,34,1 以电影方式产生动画,步骤: 使用getframe命令抓取图形作为画面,每个画面以一个列向量的方式放置到存放整个电影的矩阵M中。 使用movie(M,k)命令播放电影。可指定矩阵M播放的重复次数k。 例子:使用电影动画,显示二阶系统的时域波形。,35,2 以对象方式产生动画,须使用句柄图形的概念,所有的曲线或曲面均被视为对象,其中每个对象通过属性进行修改。 产生动画效果的一般步骤: 擦除旧对象 产生相似但不同的新对象。

20、刷新屏幕。,36,2 以对象方式产生动画(续),一般需修改的属性和操作的函数: 对象的擦除属性:EraseMode EraseMode属性有以下几种取值: normal:计算整个画面的数据,重画整个图形。 xor:将旧对象的点以xor的方式还原,即只画与屏幕色不一致的新对象点,擦除不一致的原对象点,这种方式不会擦除被擦对象下面的其他图像。 background:将旧对象的点变成背景颜色,实现擦除,这种方式会擦除被擦对象下面的其他图像。 none:保留旧对象的点,不做任何擦除,默认情况。 对象的位置属性:xdata,ydata xdata:为一个向量,代表对象的x坐标值。 ydata:为一个向量,代表对象的y坐标值。 屏幕刷新函数:drawnow,37,谢谢大家!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1