Matlab GUI绘图
在Matlab中使用GUI设计用户界面

在Matlab中使用GUI设计用户界面引言Graphical User Interface (GUI) 是现代计算机软件中常用的一种类型用户界面,它通过图形化的形式提供了直观、易用的操作方式。
Matlab作为一种功能强大的数值计算软件,也提供了丰富的GUI设计工具,使得用户可以通过简单的拖拽和设置,快速地创建出美观实用的用户界面。
本文将介绍在Matlab中使用GUI设计用户界面的基本原理和步骤,并结合实例演示具体操作。
一、Matlab中的GUI设计工具Matlab提供了几种常用的GUI设计工具,包括GUIDE(GUI Development Environment)和App Designer。
GUIDE是Matlab较早期的一个GUI设计工具,提供了可视化的编辑界面,方便用户进行界面布局和交互事件的设置。
而App Designer是Matlab较新推出的GUI设计工具,相比GUIDE具有更加丰富的功能和更好的可视化编辑体验。
在本文中,我们将以App Designer为例来介绍Matlab中的GUI设计过程。
二、创建GUI应用程序在Matlab的主界面中,点击"APPS"菜单,选择"App Designer"打开App Designer界面,然后点击"Create App"按钮创建一个新的GUI应用程序。
在弹出的对话框中输入应用程序的名称并设置保存位置,点击"Create"按钮即可创建一个空的GUI应用程序。
三、设计用户界面在App Designer中,可以通过拖拽和调整控件来设计用户界面。
常用的控件包括按钮、文本框、下拉菜单、滑块等,用户可以根据需求自由选择和排列这些控件。
同时,还可以设置控件的属性,如大小、颜色、字体等,以及添加交互事件,如按下按钮后执行的操作。
四、设置控件属性和交互事件在设计好用户界面后,需要为每个控件设置相应的属性和交互事件。
利用Matlab的图形用户界面(GUI)功能,设计并实现实验主界面

(1)利用Matlab的图形用户界面(GUI)功能,设计并实现实验主界面;(2) 实现在“符号计算”图形用户界面中的各项符号计算功能,如实现Matlab的求极限、求导、求不定积分与定积分、级数求和、方程组的符号求解、常微分方程的符号求解等符号计算;(3) 利用Matlab的二维、三维绘图功能,实现图形用户界面(GUI)中的部分符号计算的可视化,即给出符号计算实例的同时实现该实例的图形化描述。
如下图给出了一个简单的GUI界面,学生可以参考如下图设计出自己的GUI界面。
程序如下:hf=figure('Position',[200,200,700,500],...'Name','信计08(2)班阿卜杜热黑木20080803417', ...'NumberTitle','off','MenuBar','none');uicontrol(hf,'Style','Frame','Position',[0,0.15,0.45,1],...'Units','normalized','Back',[0,1,1]);COMM1=['n=str2num(get(he1,''String''));', ...%求导连接'b=sym(get(he7,''String''));',...'dec=diff(b,n);', ...'set(he8,''string'',char(dec));'];COMM2=['a=str2num(get(he2,''String''));', ...%求极限连接'f=sym(get(he7,''String''));',...'lim=limit(f,a);', ...'set(he8,''string'',char(lim));'];COMM3=['g=sym(get(he7,''String''));',... %不定积分连接'int_1=int(g);', ...'set(he8,''string'',char(int_1));'];COMM4=['a=str2num(get(he3,''String''));', ... %级数求和连接'b=str2num(get(he5,''String''));', ...'f=sym(get(he7,''String''));',...'sum_1=symsum(f,a,b);', ...'set(he8,''string'',char(sum_1));'];COMM5=['a=str2num(get(he4,''String''));', ... %定积分连接'b=str2num(get(he6,''String''));', ...'f=sym(get(he7,''String''));',...'int_2=int(f,a,b);', ...'set(he8,''string'',char(int_2));'];COMM6=['f=get(he7,''String'');',...'dsolve_1=dsolve(f,''x'');', ...'set(he8,''string'',char(dsolve_1));'];COMM7=['f=get(he7,''String'');',...'ezplot(f);'];COMM8=['g=get(he8,''String'');',...'ezplot(g);'];uicontrol(hf,'Style','Push','Position',[0.02,0.9,0.11,0.06],...'String','求导','Units','normalized','Call',COMM1); uicontrol(hf,'Style','Text','Position',[0.17,0.85,0.08,0.1],...'Units','normalized','Horizontal','center',...'String','阶数','Back',[0,1,1]);he1=uicontrol(hf,'Style','Edit','Position',[0.25,0.9,0.15,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.72,0.13,0.06],...'String','求极限','Units','normalized','Call',COMM2);uicontrol(hf,'Style','Text','Position',[0.17,0.67,0.08,0.1],...'Units','normalized','Horizontal','center',...'String','极限点','Back',[0,1,1]);he2=uicontrol(hf,'Style','Edit','Position',[0.25,0.72,0.15,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.58,0.13,0.06],...'String','不定积分','Units','normalized','Call',COMM3);uicontrol(hf,'Style','Push','Position',[0.02,0.45,0.13,0.06],...'String','级数求和','Units','normalized','Call',COMM4);uicontrol(hf,'Style','Text','Position',[0.31,0.44,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','上限','Back',[0,1,1]);he5=uicontrol(hf,'Style','Edit','Position',[0.38,0.45,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Text','Position',[0.17,0.44,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','下限','Back',[0,1,1]);he3=uicontrol(hf,'Style','Edit','Position',[0.24,0.45,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.32,0.13,0.06],...'String','求定积分','Units','normalized','Call',COMM5);uicontrol(hf,'Style','Text','Position',[0.31,0.31,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','上限','Back',[0,1,1]);he6=uicontrol(hf,'Style','Edit','Position',[0.38,0.32,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Text','Position',[0.17,0.3,0.08,0.06],...'Units','normalized','Horizontal','center',...'String','下限','Back',[0,1,1]);he4=uicontrol(hf,'Style','Edit','Position',[0.24,0.32,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.2,0.16,0.06],...'String','解微分方程','Units','normalized','Call',COMM6);uicontrol(hf,'Style','text','Position',[0.48,0.9,0.13,0.06],...'String','原函数','Units','normalized');he7=uicontrol(hf,'Style','edit','Position',[0.65,0.9,0.30,0.06],...'String','','Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','text','Position',[0.48,0.77,0.13,0.06],...'String','结果函数','Units','normalized');he8=uicontrol(hf,'Style','text','Position',[0.65,0.77,0.30,0.06],...'String','','Units','normalized','Back',[0,1,0]);h_axes=axes('position',[0.55,0.2,0.4,0.5]);uicontrol(hf,'Style','push','Position',[0.58,0.02,0.13,0.06],...'String','初始绘图','Units','normalized','call',COMM7);uicontrol(hf,'Style','push','Position',[0.80,0.02,0.13,0.06],...'String','结果绘图','Units','normalized','call',COMM8);uicontrol(hf,'Style','Push','Position',[0.02,0.02,0.08,0.06],...'String','退出','Units','normalized','Call', 'close');。
matlab中gui实时绘图

/thread-58816-1-1.html请教Matlab用sfunction在GUI的axes上画图的问题我需要把simulink里面的实时仿真数据显示在GUI的axes里面,在sfunction里面通过guihandles和guidata获得了GUI中figure和axes的handle,用axes()指定GUI中的axes为当前的axes,用plot画图,运行后生成一个新的figure,在这个新的figure上画图,且只画一个点,没有连成曲线。
后来用plot(x,y,'Parent',axes_handle)画图,可以在GUI里面的axes上画图了,但是还是生成一个新的figure。
问题:1. 在sfunction里面的axes()指定当前axes是否有用,还是只能在GUI的m文件里有用?2. 怎么能不生成新的figure?3. 如何不只是画出点,而是连成曲线。
在论坛里看到有人说问题已经解决,不过方法就是在plot前面用axes()设置当前的axes,我用这个方法没有用,希望大家能不吝赐教,谢谢。
我觉得是这样的问题,你试试这样解决行不?1、把你的GUI的figure的handlevisibility属性从“callback”改为"on"。
然后再用你上面的方法绘图看看。
有问题的话再找我,呵呵。
2、用line函数绘图,代码如下:首先定义初始绘图标志,并初始化,在figure的opening_Fcn函数中global isfirstisfirst=1;然后在sfunction里面用如下代码:global xdata;global ydata;global h1;if isfirst==1xdata(1)=p;%p、q为从scope得到的点ydata(1)=q;xdata(2)=p;ydata(2)=q;h1=line(xdata,ydata,'EraseMode','xor');isfirst=0;endif isfirst==0xdata(2)=p;ydata(2)=q;set(h1,'xdata',xdata,'ydata',ydata); end。
4MATLAB图形界面制作(GUI)与句柄图形

2020/3/20
14
图形界面制作-菜单(2)
➢ 菜单的建立:
在MATLAB中,可以通过命令行方式和GUI设计工具中的菜单 编辑器两种方式建立菜单: (1)命令行方式 :在命令行方式下,可以通过函数uimenu建
2020/3/20
13
图形界面制作-菜单
• 在绝大多数的图形用户界面下,都包含有菜单。 通过选择各级菜单,可以执行相应的命令,实现 相应的功能。一般地,从菜单的标题或名字可以 大概了解该菜单的功能。在Windows系统中,菜 单一般位于用户图形界而的顶端。例如, MATLAB的主窗口中,就有一个主菜单栏,包括 File、Edit、View、Help等主菜单。在各级主菜单 下,还有相应的子菜单。
后再定义框架中的控件。框架的style属件值是frame。
(4)列表框(List boxes)
列表框中列出其String属性的字符串项。用户可以方便的选择一个或多 个列表项。列表框的Max和Min属性控制选择模式;Value属性标明选择 的列表项的索引值。当列表框上的鼠标松开后,MATLAB会调用 Callback例程。一般地,单击与双击列表框的效果是不一样的。列表框 的Style属性值是listbox。
2020/3/20
11
菜单编辑器(2)
• 图中左上角第一个按钮用于创建下拉式菜单。用户可以通过点击它, 来创建下拉式主菜单。第二个按钮用于创建下拉式主菜单的子菜单, 在选中已经创建的下拉式主菜单后,可以单击这个按钮来创建选中的 下拉式主菜单的子菜单。选中创建的某个下拉式菜单,菜单编辑器的 右边就会显示该菜单的有关属性,可以在这里设置、修改菜单的属性。
matlab的可视化和GUI设计

MATLAB的计算可视化和GUI设计一、实验目的和要求(1)熟练掌握MA TLAB二维曲线的绘制(2)熟练掌握图形的修饰(3)掌握三维图形的绘制(4)熟练掌握各种特殊图形的绘制(5)掌握句柄图形的概念(6)掌握GUI设计二、内容和步骤(1)绘制二维曲线plot命令是MA TLAB中用来绘制二维曲线的1个常用命令。
>>subplot(221)>>x1=0:0.1:2*pi;>>y1=sin(x1);>>plot(x1,y1)以上命令是把图形窗口分割成两行两列,在窗口1绘制y=sin(x)的曲线;>>subplot(222)>>x2=peaks;>>plot(x2)在窗口2中绘制49*49的矩阵x2的曲线;>>subplot(223)>>x3=[1 2 3];>>y3=[1 2 3;4 5 6];>>plot(x3,y3)在窗口3中绘制x,y的混合曲线;>>x4=[1 1 1;2 2 2];>>y4=[1 3 7;5 9 6];>>z=x4+i*y4;>>plot(z)在窗口4中绘制复向量的曲线。
如下图所示:在窗口2中添加图形的网格并添加文字“x2曲线”>>subplot(222)>>hidden off>>subplot(222)>>grid on>>title('x2曲线')在窗口1中增加y=cos(x)曲线,并用两种不同的线型来表示y=sin(x)和y=cos(x) >>plot(x1,y1,’.’)>>hold on>>y=cos(x1);>>plot(x1,y,’o’)>>legend('sin(x)','cos(x)',4) %添加图例>>xlabel('x') %横坐标轴名>>ylabel('y') %纵坐标轴名在窗口2中改变坐标比例,并去掉坐标框>>axis([0,50,-5,5])>>box off(2)绘制三维图形在MA TLAB中,用来绘制三维图形的命令是plot3,它的使用格式与二维绘图的plot命令相似。
MATLAB-GUI图形用户界面设计分析

1) 双击设计工作区的空白局部,翻开整个图形窗的属性框。
MuUnnuiBtsa或r: FnoonnteUnits可选择%:图i形nc窗he是s(英否寸使)用,标ce准nt菜im单eters
(厘N米am),e: cnaocrumlaatloizred%(按图比形例窗缩名放称),points(点阵), pixels
翻开GUI设计工作台的命令:
guide
%翻开设计工作台启动界面
guide file %在工作台中翻开文件名为file的用户界面
菜单项[ File:New->GUI ] %翻开设计工作台启动界面
留意:guide命令中文件名不区分大小写。
翻开的GUI启动界面供给新建界面( Create New GUI )或 翻开已有界面文件( Open Existing GUI )的属性页。新建界面 可以选择空白界面、包含有控件的模板界面、包含有轴对象
riFghotn。tUnits: points
%字体大小的度量单位
Ho控riz件on句ta柄lATliaggn有m默en认t: 值Ce,nt建er议修%改对为齐带方有式具体含义的字 符S串tr,ing以: E增x加pr程ess序io可n 读性和%便待利显回示调的函字数符调用。
Tag: text1
%该静态文本框的句柄handles.text1
留意: 1) 先完成大致界面布局,再编写功能程序。 2) 界面风格要全都,且符合使用习惯。例如,一般习惯图形
区在上面或左面,把握区在下面或右面等等。
2023/10/12
3
GUI图形用户界面
例如,以本次试验的内容“计算器”为例。
1) 功能分析:完成数字的四则运算,以及一局部常用的科学 计算:sin, cos, log等等。
matlab中gui绘图清空坐标轴

/viewthread.php?tid=47718&highlight=gui%2Baxes GUI中axes使用subplot时的清空及axes大小的固定的解决方法
看到过好几个类似下面问题的帖子:
1、axes显示图片时随着图片的大小变化,如何固定axes显示图片大小;
2、当在axes使用subplot画多个图时,如何清空图片,达到可以重复绘制图片的目的;昨天又遇到了/thread-47629-1-1.html
动手做了一个例子验证了一下,得出解决方法。
第一个问题很简单,把axes放到一个panel面板中即可;
第二个问题稍微麻烦点,有人可能会说用cla/cla reset,这个时候cla/cla reset只能清除最后一个subplot对应的图,其他的不能清除,举个例子说一下解决方法:
%画图程序:
复制内容到剪贴板
代码:
h1=subplot(121); %记下句柄h1
x=imread('football.jpg');
imshow(x);
h2=subplot(122); %记下句柄h2
y=imread('arms.jpg');
imshow(y);
%清空图像
复制内容到剪贴板
代码:
global h1 h2;
h=0;
if ishandle(h1) %判断h1是不是一个句柄
delete(h1);h=1;
end
if ishandle(h2) %判断h2是不是一个句柄
delete(h2);h=1;
end
if h
axes('parent',handles.uipanel1) %重建一个axes
end。
利用Matlab的图形用户界面(GUI)功能,设计与实现实验.

(1 利用Matlab 的图形用户界面(GUI )功能,设计与实现实验主界面;(2 实现在“数值计算”图形用户界面中的各项数值计算,如实现Matlab 的线性方程组的求解、数据统计与分析、数值插值、曲线拟合、常微分方程的数值求解等数值计算;(3 利用Matlab 的二维、三维绘图功能,实现图形用户界面(GUI )中的数值计算的可视化,即给出数值计算实例的同时实现该实例的图形化描述。
如下图给出了一个简单的GUI 界面,学生可以参考如下图设计出自己的GUI 界面。
figure('Color' ,[1,1,1],'Position' ,[100,100,700,600],...'Name' , '' , ...'NumberTitle' , 'off' , 'MenuBar' , 'none' ;uicontrol('Style' , 'Frame' , 'Position' ,[0,0.08,0.45,1],...'Units' , 'normalized' , 'Back' ,[0,1,1];XIANQIU=['a=str2num(get(xishu,''String'';', ...'b=str2num(get(changshu,''String'';', ...'b=b'';x=a\b;', ...'set(jieguo,''string'',x;'];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.92,0.20,0.06],...'String' , 'ÏßÐÔ·½³Ì×éÇó½â', 'Units' , 'normalized' , 'Call' ,XIANQIU;uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.83,0.1,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'ϵÊý¾ØÕó', 'Back' ,[0,1,1];xishu=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.83,0.25,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.72,0.1,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , '³£ÊýÏî¾ØÕó', 'Back' ,[0,1,1];changshu=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.72,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.63,0.20,0.06],... 'String' ,'Êýֵͳ¼ÆÓë·ÖÎö';uicontrol('Style' , 'Text' , 'Position' ,[0.23,0.63,0.2,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'ÔÚϵÊý¾ØÕóÊäÈë¿òÖÐÊäÈëÒª·ÖÎöµÄ¾ØÕó', 'Back' ,[0,1,1];uicontrol('Style' , 'Push' , 'Position' ,[0.06,0.55,0.1,0.05],... 'String' , 'ÊýÖµ²åÖµ';uicontrol('Style' , 'Push' , 'Position' ,[0.22,0.55,0.1,0.05],... 'String' , 'ÇúÏßÄâºÏ';uicontrol('Style' , 'Text' , 'Position' ,[0.005,0.45,0.05,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'X' , 'Back' ,[0,1,1];chazhi=uicontrol('Style' , 'Edit' , 'Position' ,[0.05,0.45,0.15,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.2,0.45,0.05,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'Y' , 'Back' ,[0,1,1];nihe=uicontrol('Style' , 'Edit' , 'Position' ,[0.25,0.45,0.15,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];XIANXING=['s=(get(changwei,''String'';', ...'c=(get(tiaojian,''String'';', ...'c_f=dsolve(''s'',''b'',''x'';', ...'set(jieguo,''string'',char(c_f;'];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.35,0.25,0.06],...'String' , '³£Î¢·Ö·½³ÌÊýÖµÇó½â', 'Units' , 'normalized' , 'Call' ,XIANXING;chengwei=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.25,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.25,0.1,0.05],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '΢·Ö·½³Ì', 'Back' ,[0,1,1];tiaojian=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.15,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.15,0.1,0.05],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '³õÖµÌõ¼þ', 'Back' ,[0,1,1];h_axes=axes('position' ,[0.5,0.15,0.4,0.4];jieguo=uicontrol('Style' , 'text' , 'Position' ,[0.5,0.6,0.45,0.25],... 'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.6,0.85,0.3,0.1],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '½á¹û', 'Back' ,[1,1,1],'FontSize' ,35;uicontrol('Style' , 'Push' , 'Position' ,[0.018,0.02,0.08,0.05],... 'String' , 'Í˳ö', 'Units' , 'normalized' , 'Call' , 'close' ;uicontrol('Style' , 'Push' , 'Position' ,[0.65,0.025,0.08,0.05],...'String' , '°¡Êµ´òʵ', 'Units' , 'normalized' , 'Call' , '»æÍ¼º¯Êý°´Å¥';。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
※省缺值的获得与设置也是由get,set函 数实现的
例: get(0,'DefaultFigureColor') —— 获得图形 窗口的省缺值 set(h,'DefaultLineColor','r') ——设置线的 颜色为红色 例:在图上添加文字注释,颜色为红色 set(gca,'DefaultTextColor',[1 0 0]) gtext('正弦') gtext('余弦') %鼠标取点 • 在轴对象上设置字对象的颜色省缺值为红色 • 继承该省缺值在图上添加红色的文字注释
0
5
0 50
像对象
100 150 200 100 200 300
块对象
0
-1
2.创建图形对象的底层函数
• figure创建图形窗口
调用格式: h=figure(n) n为窗口序号
• uicontrol图形界面控制
调用格式:
h=uicontrol(‘property’,value)
property/value确定控制类型
例: subplot(2,2,1) membrane %这是一个库函数 light('color',[0.9 0.5 0.1],'position',[0,2,1]) %风格省略为无穷远,光顺序通过(0 0 0)和(0 2 1) subplot(2,2,2) membrane light('color',[0.9 0.0 0.1],'style','local','position',[1,-1,1]) %风格为本地光,光源在(1 -1 1)位置
窗口对象
1 0.8 0.6 0.4 0.2 0
轴对象 线 对 象
面对象
10
value of the cosine 1 cos(x)=0.707 0.5 0 -0.5
cos(x)
0 -10 20 10 0 0 10
线对象
轴对象
20 -1 -5 1 0.5 0 -0.5
x=-pi tp pi 文字对象
4.句柄(handle)与句柄操作
• 什么是句柄? 句柄是图形对象的标识代码(唯一的身份),标
识代码含有图形对象的各种必要的属性信息。
• 各图形对象的句柄数据格式:
根屏幕
图形窗口
0
正整数,表示图形窗口序号
其它对象
对应的双精度浮点数
• 所有能创建图形对象的matlab函数都可给出 所创建图形对象的句柄 例:创建1号窗口,返回句柄 h=figure(1)
• line 创建线对象
h=line(x,y,z) • patch 创建块对象 h=patch(x,y,z,c) x,y,z定义多边形,c确 定填充颜色。 • surface 创建面对象,是底层函数
二维画线 三维画线
h=surface(x,y,z,c) x,y,z三维曲面坐标, c颜色矩阵。而surf是高级函数。
※ 控制一个图形对象是通过句柄实现的,
具体是通过句柄操作函数get,set将某 对象句柄属性作设置与修改。 1. 对象属性的直接操作
对象属性的直接操作是通过当前句柄来
实现的,所以首先要获得当前句柄值以及
对象的属性,然后再查询或修改。
get(h) get(h, 'propertyname') set(h)
1 0.8 0.6 0.4
0.2
0
-0.2
1
0 1 2 3 4 5 6 7
-Hale Waihona Puke .4-0.6-0.8
-1
• 首先查询各对象的属性
get(gcf) · · · h=get(gcf,'children') h= 60.0004 hh=get(gca,'children') hh = 70.0004 69.0004 68.0004
get(gca)
• 可查色序
get(gca,'colororder') ans = 1 1 0
1
0 1 0 0
0
1 0 1 0
1
1 0 0 1
• 设置线条和窗口的颜色 set(h1,'color',[1 0 0]) set(h1,'color',[1 0.5 0])
10 9 8 7 6 5
10 9 8 7 6 5
• image 显示图象 h=image(x); x为图像矩阵 • text 标注文字对象
h=text(x,y, 'string')
确定标注位置 标注字符串
例:h=text(0.1,0.2,'super star') 每个底层函数只能创建一个图形 对象,并将它们置于适当的父辈对象 中。
set(gcf,'color',[0.5 0.5 0.5]) set(gcf,'color',[0.5 0.6 0.8])
10
10
9
9
8
8
7
7
6
6
5
5
4
4
3
3
2
2
1
1
0 0 1 2 3 4 5 6 7 8 9 10
0
0
1
2
3
4
5
6
7
8
9
10
例:作正弦、余弦曲线,将正弦曲线改为虚 线,将余弦曲线幅度减为1/2高度,如何用 句柄实现。 x=0:2*pi/180:2*pi; y1=sin(x);y2=cos(x); plot(x,y1,x,y2,x,zeros(size(x)),':')
3.图形对象的属性
※ 图形对象是由属性来描述的,可以 通过修改属性来控制对象外观、行为 等诸多特征。
※用户不但可以查询当前任意对象的 任意属性值,而且可以指定大多数属 性的取值。
※在高层绘图中对图形对象的描述一般是省
缺的或由高层绘图函数自动设置的,因此
对用户来说几乎是不透明的。 ※但句柄绘图中上述图形对象都是用户需要 经常使用的,所以要作到心中有数,用句 柄设置图形对象的属性。
set(h, 'propertyname',value)
set(h, '属性名称', '新属性')
'color',
'linestyle',
'r‘
':'
'figurecolor', 'm'
2.对象属性的继承操作
• 对象属性的继承操作是通过父代对象,
设置省缺对象属性来实现的。 • 父代句柄属性中设置缺省值后,所有子
• uimenu创建用户界面菜单
调用格式:
h=uimenu(‘property’,value)
property/value 确定菜单形式。
• axes 创建轴对象 h=axes(‘property’,
left, bottom width,height
)
定义轴对象的位置与大小
例:axes('position',[0.1 0.1 0.5 0.2]) x=0:0.5:10;y=x;plot(x,y) 还有axis命令,定义了轴的位置、宽度和高 度。 例:axis([0 10 2 10]) 注意二者的区别
light灯光对象
• 函数light创建一个灯光源。一个灯光源 含三个因素:颜色、风格、位置。 • 调用: light('color',[1,1,1],'style',local or infinite,'position',[x,y,z]) • 本地光:X,Y,Z表示光源位置。无穷远光: X,Y,Z表示无穷远光通过该点射向原点。
h=1
返回值为窗口号数
h=figure('color',[1 0.1 0],'position',[0 0 200 100],'name','ww') 例:h=line(1:6,1:6)创建线对象的同时也建立 了一个唯一的句柄 变量h是句柄值——符点数
二、图形对象属性的获得与设置
• 句柄属性的设置与修改 get: 获得句柄图形对象的属性和返回某些 对象的句柄值 get(gca,’属性’) 返回当前坐标的单项属性值 set: 改变图形对象的属性 • 专用函数: gcf:当前窗口对象的句柄 Get Current Figure gca:当前轴对象的句柄 Get Current Axes get(gca) 返回当前坐标的所有属性值
界面控制:图形窗口的子代,创建用户界面 控制对象,使得用户可采用鼠标在图形上 作功能选择,并返回句柄。
界面菜单: 图形窗口的子代,创建用户界 面菜单对象 轴:图形窗口的子代,创建轴对象,并返回 句柄,线面字块像的父辈 线:轴的子代,创建线对象 面:轴的子代,创建块对象 字:轴的子代,创建字对象 块:轴的子代,创建块对象 像:轴的子代,创建图像对象
• 操作格式: h=gcf 将当前窗口对象的句柄返回h get(h)或get(gcf) 查阅当前窗口对象的 属性 delete(gcf) 删除当前窗口的属性 例:h=line(x,y) 1. get(h) 2. get(gca,'children')轴的子代
例:创建一个线对象并返回线对象的句柄值 • h1=line([0:10],[0:10])
图形对象的基本要素以根屏幕为先导
根屏幕
父对象 窗口1 界面控制 窗口2 界面菜单