一.Stem函数
%构建一组xy数据,方便绘图
x = 0:25; %x025的整数
y = [exp(-.07*x).*cos(x);exp(.05*x).*cos(x)]'; %给出一个自己的函数,根据xy的值
h = stem(x,y); %绘制火柴梗图
set(h(1),'MarkerFaceColor','blue') %设置第一个火柴梗的头部颜是蓝 set(h(2),'MarkerFaceColor','red','Marker','square')%第二个是红,请头部不是圆形而是方形 stem工作原理是,根据一个x对应一个y,绘制火柴梗图
二.Axis函数
axis中文为之意,在matlab中用于控制坐标轴的范围和样式(颜等)。
axis([XMIN XMAX YMIN YMAX]) 设置当前所绘图像的x轴和y轴的范围。
axis([XMIN XMAX YMIN YMAX ZMIN ZMAX]) 设置当前所绘图像的x轴、y轴和z轴的范围。
例子:
>> x = [1,2,3,4,5];
>> y = [2,3,4,5,6];
>> plot(x,y,'o')
>> axis([0,5,0,6]);
得到图像
三.Set函数
MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值。例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-' ':''-.''--''none'
2.属性的操作
    set函数的调用格式为:
    set(句柄,属性名1,属性值1,属性名2,属性值2…)

例子:

clear
x=0:0.2:12;
y1=bessel(1,x);
y2=bessel(2,x);
y3=bessel(3,x);
h=plot(x,y1,x,y2,x,y3);
set(h,{'LineWidth'},{2;5;8})  %set(h,{'LineWidth'},{2})==set(h,'LineWidth',2),将所有线宽设置为2
set(h,{'Color'},{'r';'g';'b'},{'LineStyle'},{'--';':';'-.'}) %设置颜和线宽
axis([0 12 -0.5 1]) %设置坐标轴范围
grid on
X=0:1:12;
Y=-0.5:0.25:1;
set(gca,'xtick',X,'ytick',Y) %设置网格的显示格式,gca获取当前figure的句柄
set(xlabel('Time'),'FontSize',12,'Color','r')
y=ylabel('Amplitude');
set(y,'FontSize',12,'Color','g')
legend(h,'First','Second','Third')  %添加图例
title('Bessel Functions') %添加标题
[y,ix]=min(y1); %y1的最小值以及改值的下标,赋给yix
text(x(ix),y,'First Min rightarrow','HorizontalAlignment','right') %插入文本

具体可改哪些属性值见贴
blog.ednchina/xth543/218124/Message.aspx

gcf返回当前Figure对象的句柄值
gca返回当前axes对象的句柄值
gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在FigureCurrentObject属性中
原文在于雪漫的blog
blog.sina/s/blog_4b9b714a0100cce2.html
这两天在看句柄式图形方面的东西,以下是我在看书过程中整理的学习笔记,比较详细的介绍了句柄以及与其密切相关的各种图形对象和它们的属性。希望能对初学Matlab界面设计的朋友们有所帮助。
GUI学习笔记:
句柄式图形常用函数:
1geth)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值
2a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。
3a = get(0,'factory')返回所有能由用户设置的属性的默认定义值。
4a = get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePropertyName2',...)返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory与图形对象类型(如Figure)还有属性名称(如Color)组成。
a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。
5a = get(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName1',...)返回句柄值为h的对象指定属性的默认值。如“DefaultFigureColor”
6a = get(h,'default')列出h对象的所有属性的默认属性值
7a = set(h)返回句柄值h所指定的图形对象的所有属性名称对应的可设置属性值,a
结构数组,存储对象的属性名称,其字段值为相对应的属性值。属性值中用{}括起来的表示默认值。
8set(h,a)使用指定的属性值来设置由句柄值h所指定的对象属性,a为结构数组,其字段名称为对象的属性名称,字段值为相对应的属性值。
9a = set(0,'factory')返回那些用户可以设置默认值的所有对象的属性,同时显示可设置的属性值。
10a=set(0,'FactoryObjectTypePropertyName')返回所有对象中指定的属性名称FactoryObjectTypePropertyName的所有可能的属性值。
11a = set(h,'属性名','属性值')设置句柄值为h的对象的与属性名对应的属性值。
12set(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName2',...)对句柄值为h的对象设置特定属性名称的属性默认值。
13H = findobj;返回Root对象与其所有子对象的句柄值
14H = findobjh;返回h变量的句柄值
15H = findobj(’属性名称属性值‘);依据对象的属性名称和属性值出匹配的对象句柄值。
16H = findobj(ObjectHandles属性名称属性值‘);根据限定的对象列表出与对象的属性名称和属性值匹配的对象句柄值
17gcf返回当前Figure对象的句柄值
gca返回当前axes对象的句柄值
gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在FigureCurrentObject属性中
Figure对象的属性篇
(1).^是矩阵每个元素的幂乘,^是数的幂乘。
(2)set(handle)列出句柄值为handle的对象的所有属性
get(handle)除列出上述属性外,还列出可以设置的属性
reset(handle)将所有属性改为默认值
delete(handle)删除句柄值为handle的图形对象
(3)利用sethandle属性名称)获得句柄值为handle的对象的属性名称下所有可设置的属性值
set(gcf,'units):得到[ inches | centimeters | normalized | points | {pixels} | characters ],其
中,大括号中是默认值
(4)clf reset;将窗口关闭,并重新设置其属性为默认值。
(5)Closerequestfcn,有效值为字符串或函数句柄(前加@)
当关闭绘图窗口或离开Matlab时,就会定义Closerequestfcn定义的函数
(6)createfcn,当Matlab建立一个对象时(如为figure对象,即打开一个绘图窗口),就会触发createfcn所定义的callback程序。如set(0,'defaultfigurecreatefcn','set(gcbo,''integerhandle'',''off'')');即设置了根对象的默认值,使每次建立figure对象时,都会指定一个非整数的句柄值。(在用户未指定句柄值时)
7)将当前窗口中在键盘上按下的按键名显示出来。
set(gcf,'keypressfcn','get(gcf,''currentcharacter'')')
(8)color有效值为colorspec
colorspec:
RGB 简称
[110] y_yellow
[101] m_magenta
fontweight属性bold
[011] c_cyan
[100] r_red
[010] g_green
[001] b_blue
[111] w_white
[000] k_black
(9)linspace(a,b,c)a初始b结束c线性分段次数linspace(a,b)则默认100
10CurrentObject:有效值为图形对象句柄值:返回绘图窗口内当前被鼠标选取的对象的句柄值
11currentPoint:有效值[x-坐标,Y-坐标]返回绘图窗口中最后单击鼠标的位置,用get(gcf,'currentpoint')就会返回当前在窗口中单击鼠标的位置
12DeleteFcn:有效值:字符串或函数句柄,删除对象(这里为figure)时会触发Deletefcn所定义的Callback程序。
13Dockcontrols:有效值为on/off,默认值on,控制窗口的嵌入效果是否可用。
14Hittest:有效值on/off,决定能否用鼠标选取对象为当前对象。
15Integerhandle:有效值on/off,决定Figure对象句柄值的类型为整数或浮点小数。
16Interruptible:有效值on/off,执行过程中需要中断程序而优先执行其他程序时要设该属性为on。即Interrupptible属性是用以控制当Callback执行时是否能被其他事件(如此时鼠标按下其他控制对象)而中断,on是会中断,off时会执行完当前Callback,再去执行其他Callback
17Keypressfcn:有效值为字串或函数句柄。当用户在figure窗口中按下键盘的任意键时,就会执行Keypressfcn所定义的Callback程序。
figure('keypressfcn','fprintf(''当前按下键盘上的%c\n'',get(gcf,''currentcharacter''))')在这个figure窗口中按下键盘上的按键时就会立即返回对应的字符,依据这个效果就可以决定当字符键被按下时所要执行的操作。
当这个属性指定的值是一个函数句柄时,Matlab就会将这个函数视为一个结构,包含下列字段——character(以当前键盘上按下的按键显示的字符来当作结果),modifier(包含一个或多个识别键盘上按下按键字符名称的细胞数组(如CtrlAltShift等),key(显示被按下的键)。
18WindowButtonDownFcn:有效值为字符串或函数句柄
当鼠标在绘图窗口内按下鼠标任意键时,将触发WindowButtonDownFcn所定义的Callback以产生相对应的操作。
19WindowButtonMotionFcn:有效值为字符串或函数句柄
当鼠标在绘图窗口内按住鼠标任意键移动,将触发WindowButtonMotionFcn所定义的Callback以产生相对应的操作。
20WindowButtonUpFcn:有效值为字符串或函数句柄
当鼠标在绘图窗口内释放鼠标任意键时,将触发WindowButtonUpFcn所定义的Callback以产生相对应的操作。
21CurrentAxes有效值为当前坐标轴的句柄值,返回当前的坐标轴句柄值。假设某坐标轴句柄值为a_h,可以使用axesa_h)set(gcf,'currentaxes',a_h)这两种方式,制定句柄值为a_h的坐标轴为当前坐标轴。
22CurrentCharacter:有效值为任意字符,返回用户在绘图窗口中最后输入的一个字符,即刚在键盘上按下的字符键将存储到Currentcharacter中,一般于Keyppressfcn合用。
23Currentobject有效值为图形对象的句柄值,返回绘图窗口内当前被鼠标选取的对象的句柄值。
24)有效值为两元素的向量,[X坐标,Y坐标]
返回绘图窗口中最后单击鼠标的位置,与WindowbuttonmotionfcnWindowbuttonupfcn合用。使用get(gcf,'currentpoint')就会返回当前在窗口中单击鼠标的位置。
Axes对象的属性
1title('new','color','r');给坐标轴命名为new,红
title({'this title','has 2 '});命名为两行的标题
2Units:有效值为pixels/normalized/inches/centimeters/points/characters
决定各种位置属性的度量单位,相对于窗口左下角为基准。当设置为Pixels时,以像素为单位;当设置为normalized时,以坐标为单位,屏幕的左下角为[00],右上角为[1.01.0]
3grid on:在图像中显示网格。
4children:控制axes对象的子对象,即image\light\line\patch\rectangle\surfacetext等对象,可通过get(gca,'children')来返回当前坐标轴的子对象构成的句柄值向量。
5)字体属性:
Fontangle字体角度(正常normal或斜体italic/oblique)
Fontname字体名称
fontsize字体大小(单位由Fontunits决定)
fontunits字体单位(points/normalized/inches/centimeters/pixels)
fontweight字体粗细(normal/bold/light/demi
gridlinestyle决定坐标轴网格线的样式,‘-’为实线‘- -’为虚线为点线‘-.’为点虚线
plot(1:10);grid on;set(gca,'gridlinestyle','-.');将当前坐标轴显示的网格线为点-虚线
6linewidth 定义XYZ轴的轴线宽度(以点单位定义)
7NextPlot:有效值为add|replace|replacechildren,默认为replace
add表示使用当前的坐标轴,把新的图形对象加到此坐标轴中是一般保留的做法,replace表示重新设置坐标轴的所有属性(Position除外),也就是在绘图前会删除当前坐标轴和它的子对象。replacechildren表示移除当前坐标轴中所有子对象,但不重新设置坐标轴的所有属性
8Outerposition决定坐标轴外边界的位置。由位置向量[leftbottomwidthheight]组成,其中leftbottom表示相对于绘图窗口左下角的位置,widthheight表示区域尺寸,默认为[0 0 1 1]
9Position由位置向量[leftbottomwidthheight]组成,决定坐标轴位置
10Tag定义本坐标轴的卷展栏,因为每一个对象都有自己唯一的识别码即tag,以方便findobj函数查坐标轴句柄值。
11visible决定坐标轴是否可见
12set(gca,'xgrid','on')绘制X轴垂直网格线
set(gca,'gridlinestyle',':','linewidth',3)设置网格线线条类型和宽度
set(gca,'box','on')将图轴方框绘制出来
13set(gca,'xscale','linear');X轴刻度设为线性
set(gca,'yscale','log');Y轴刻度设为对数
14disp()显示一个数组,但不显示其数组名称
disp(' Corn Oats Hay')
disp(rand(5,3))
which results in
Corn Oats Hay
0.2113 0.8474 0.2749
0.0820 0.4524 0.8807
0.7599 0.8075 0.6538
0.0087 0.4832 0.4899
0.8096 0.6135 0.7741
Pausepause, by itself, causes M-files to stop and wait for you to press any key before continuing.
实例:plot(1:10);set(gca,'yscale','log');
disp('请按下Enter');
pause
set(gca,'Yscale','linear');本例是说按下Enter键将Y轴刻度由对数改为线性。
16XtickYtickZtick:控制XYZ轴坐标刻度记号的位置,即控制坐标轴上刻度记号的位置以及每隔多少值会到下一个刻度记号的位置,同时还需要配合XticklabelYticklabelZticklabel属性来调整。详细见例程。
以下设置方式相同:
set(gca,'Xticklabel',{'1';'10';'100'})
set(gca,'Xticklabel','1|10|100')
set(gca,'Xticklabel',[1;10;100])
set(gca,'Xticklabel',['1 ';'10 ';'100'])
17Findobj:查
Line对象
当用户建立一个线对象时,就会触发Createfcn所定义的Callback产生相对应的操作;同样,若删除一个线对象时,就会触发DeleteFcn所定义的Callback产生相对应的操作。以下程序建立一个线对象,并设置DeleteFcn为一个问题对话框,当删除该线对象时,就会显示其问题对话框来询问用户。
(1) clipping:有效值为on/off,默认值为on
设置坐标轴土筐是否可以剪辑,如果设为off,则绘制线对象时可超出坐标轴的图框。
2Linewidth:有效值为纯量(与向量相对,只有大小而无方向),点为单位。
3Marker:有效值为字符,决定Line对象的记号类型,有+o*.xsd,等
4Markersize:有效值为纯量,单位为点,Marker的大小。
5UIcontextmenu:有效值为uicontextmenu对象的句柄值,定义与线对象相关联的uicontextmenu菜单,因此当用户将该线对象的属性UicontextMenu设置为相关联的uicontextmenu对象的Tag名称时,uicontextmenu就可以在该线对象上单击鼠标右键来显示uicontextmenu菜单。
6Tag:有效值为字符串,定义改线对象的卷展栏(即标记)
7Type:有效值为字符串(只读),此处为’line‘字符串。
8XdataYdataZdata:有效值为坐标数组,指定产生线条的数据点,若为2D环境则XdataYdata需要有相同数目的数据,而Zdata为空矩阵;3D环境则XdataYdataZdata三者都需要有相同数目的数据。
例:x=0:5,y=x+10;line('xdata',x,'ydata',y);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。