7.3.2 轴的产生和控制命令命令1 axes 功能 创建坐标轴图形对象。该命令是创建坐标轴图形对象的低级函数命令。 用法 axes 在当前图形窗口中用缺省的属性值创建一坐标轴图形对象。 axes('PropertyName',PropertyValue,…) 用参量'PropertyName'指定的属性名与用参量PropertyValue指定的属性值创建一坐标轴。对于没有指定的属性名,系统则使用缺省的属性值。 axes(h) 使已经存在的坐标轴h成为当前的坐标轴。同时使坐标轴h为图形窗口中的所有子对象属性(Children property)的第一坐标轴,也使图形窗口的CurrentAxes属性为h。当前坐标轴是图形函数image、line、patch、 surface与text等命令输出图形对象的目的地。 h = axes(…) 返回已经创建的坐标轴对象的句柄。 命令2 cla 功能 清除当前坐标轴。该命令在命令窗口中执行与在回调程序中执行效果是一样的,即它不能区别由callback设置的属性 HandleVisibility,也就是说,当它从一回调程序中执行时,命令cla仅仅删除属性HandleVisibility为on的图形对象。 用法 cla 清除当前坐标轴中所有句柄为不隐藏(例如,图形对象属性HandleVisibility设置为on)的图形对象。 cla reset 无条件地清除当前坐标轴中所有图形对象,且重新设置坐标轴的属性,(除了属性Position和Units)。 命令3 gca 功能 获取当前坐标轴句柄。 用法 h=gca 返回当前图形窗口中的坐标轴句柄。若坐标轴不存在,系统则生成一坐标轴同时返回它的句柄。用户不想得到上面的结果,可以输入get(gcf,’CurrentAxes’)。 当前坐标轴为用户创建坐标轴以下子对象的目的地。有许多图形命令可以在当前坐标轴中画出图形对象,如:plot,text,surf等。改变了当前窗口,相应地改变了当前坐标轴。 7.3.3 图形句柄操作命令命令1 gco 功能 返回当前对象的句柄。“当前对象”为最后用鼠标单击的对象,除了命令uimenus之外。若鼠标没有单击到一图形对象之下的子对象,则该图形对象为“当前对象”。系统会把当前图形对象的句柄存放于图形的属性CurrentObject之中。当前图形窗口中的当前对象并非总是那些它们的回调函数,而是正在执行的对象。其他函数的回调中断函数可以改变当前对象或者甚至是当前图形窗口。一些回调函数,如生成命令CreateFcn、删除命令DeleteFcn 与用户界面菜单命令Callback等就没有改变当前图形窗口或者当前对象。 用法 h = gco 返回当前对象的句柄给h。 h = gco(figure_handle) 返回指定窗口figure_handle中的当前对象的值。 命令2 get 功能 获取对象属性。 用法 get(h) 返回由句柄h指定的图形对象的所有属性与相应的当前属性值; get(h,'PropertyName') 返回由句柄h指定的图形对象的指定属性PropertyName的属性值。 <m-by-n value cell array> = get(H,<property cell array>) 返回由m个图形对象的n个属性值组成的m*n阶的细胞数组,其中m=length(H),且n为指定的属性细胞数组<property cell of array>中包含的属性名个数。 a = get(h) 返回一结构,其中该结构的域名为该对象的属性名,结构的域名值为相应属性的当前值。H必须为标量。若用户没有指定输出参量,则系统将信息显示于屏幕之上。 a = get(0,'Factory') 返回所有能由用户设置的属性的缺省定义值。输出参量a为一结构数组,该结构的域名为对象的属性名,域名值为相应属性的当前值。若用户没有指定输出参量,则系统将信息显示于屏幕之上。 a = get(0,'FactoryObjectTypePropertyName') 返回指定对象类型的指定的属性的缺省属性值。输入参量FactoryObjectTypePropertyName为一关键字,由字符Factory与对象类型(如:Figure)还有属性名(如:Color)组成:FactoryFigureColor a = get(h,'Default') 返回由句柄h指定的对象的所有缺省属性值。输出参量a为一结构,该结构的域名为缺省值对应的属性名。若用户没有指定输出参量,则系统将该结构信息显示于屏幕。 a = get(h,'DefaultObjectTypePropertyName') 返回对象类型的指定属性的缺省属性值。输入参量DefaultObjectTypePropertyName为一关键字,该字由字符Default与对象类型名(例如:Figure)还有具体的属性名(例如:Color)组成:DefaultFigureColor 例7-50 若想获得定义于屏幕之上的图形对象属性LineWidth的缺省属性值,输入:get(0,'DefaultLineLineWidth') 命令3 set 功能 设置对象的属性。 用法 set(H,'PropertyName',PropertyValue,…) 用属性值'PropertyValue'设置关于用参量H标志的对象(一个或多个)的属性名'PropertyName'(一个或多个)。H可以为一句柄的向量。在这种情形下,命令set可以设置所有对象的属性值。 set(H,a) 用指定的属性值设置由H标志的对象的属性。其中a为一结构数组,该结构数组的域名为对象的属性名,域名值为相应属性名的属性值。 set(H,pn,pv…) 对由H指定的所有对象中指定的细胞数组属性名pn设置为相应的细胞数组属性值pv。 set(H,pn,<m-by-n cell array>) 对于每m个图形对象设置n个属性值,其中m=length(H),n为包含属性名的细胞数组pn中包含的属性名个数。即允许用户对每一对象的指定的属性设置不同的属性值。 a= set(h) 返回句柄h中允许用户设置的属性名与可能的属性值。输出参量a为一结构数组,其域名为对象的属性名,域名值为相应的属性名对应的属性值。若没有指定输出参量a,则系统自动将信息显示于屏幕,h必须为标量。 a= set(0,'Factory') 返回那些用户可以设置缺省值的所有对象的属性名,同时显示可能的属性值,输出参量a为一结构数组,其域名为对象的属性名,域名值为相应的属性名对应的属性值,若没有指定输出参量a,则系统自动将信息显示于屏幕。 a= set(0,'FactoryObjectTypePropertyName')返回指定根对象(0)类型中指定的属性名 ObjectTypePropertyName的所有可能的属性值。输入参量是由固定的关键字Factory、对象类型(如axes)与属性名(如 position等)组成。 a= set(h,'Default') 返回由h标记的对象上缺省设置的值,其中h必须是标量。 a= set(h,'DefaultObjectTypePropertyName') 返回指定对象h的类型中指定的属性名ObjectTypePropertyName的所有可能的属性值。输入参量是由固定的关键字Factory、对象类型(如axes)与属性名(如position等)组成。 命令4 reset 功能 重新设置图形对象的属性为它们的缺省值。 用法 reset(h) 重新设置由句柄h指定的图形对象的属性为系统为它们设置的初始值。若h为一图形figure,该命令不能重新设置属性 Position,Units,PaperPosition和PaperUnits;若h为一坐标轴axes,该命令不能重新设置属性Position和 Units。 例7-51 reset(gca) %重新设置当前坐标轴的属性。 reset(gcf) %重新设置当前图形的属性。 命令5 delete 功能 删除文件或图形对象。作为一可供选择的函数,用户可从当前目录浏览器(Current Directory browser)中删除文件。要打开该浏览器,从MATLAB桌面上的View菜单中选择Current Directory命令。 用法 delete filename 从磁盘上删除指定的文件filename。参量filename可以是绝对路径或与当前路径相关的路径名。其中可以包括通配符(*)。 delete(h) 删除由句柄h指定的图形对象。该命令无条件地、直接地删除对象,甚至是图形窗口。 delete('filename') 这是第一种情形的函数形式。当文件名包含于字符串filename中时,使用函数形式。 例: delete(‘D:\MATLABR12\work\*.m’) % 将删除指定目录上的所有.m文件。 命令6 findobj 功能 定位图形对象且返回它们的句柄。用户可用特定的属性值与沿着指定的层次分支来限定搜索条件。 用法 h = findobj返回根对象与它的所有的子孙对象句柄。 h = findobj('PropertyName',PropertyValue,…) 返回属性名PropertyName具有属性值PropertyValue的所有图形对象。用户可指定一对或多对PN与PV值,对此,findobj返回满足所有条件的那些对象。 h = findobj(objhandles,…) 限定搜索的对象为列表于objhandles中的对象与它们子孙对象。 h = findobj(objhandles,'flat','PropertyName',PropertyValue,…) 限定搜索对象为objhandles中列出的对象,而不包含它们的子孙对象。 7.3.4 图形窗口的控制命令命令1 subplot 功能 生成与控制多个坐标轴。把当前图形窗口分隔成几个矩形部分,不同的部分是按行方向以数字进行标号的。每一部分有一坐标轴,后面的图形输出于当前的部分中。 用法 subplot(m,n,p) 将一图形窗口分成m*n个小窗口,在第p个小窗口中创建一坐标轴。则新的坐标轴成为当前坐标轴。若p为一向量,则创建一坐标轴,包含所有罗列在p中的小窗口。 subplot(h) 使句柄h对应的坐标轴称为当前的,用于后面图形的输出显示。 subplot('Position',[left bottom width height]) 在由4个元素指定的位置上创建一坐标轴。位置元素的单位为归一化单位。 h = subplot(…) 返回一新坐标的句柄于h。 命令2 hold 功能 保持当前图形窗口中的图形。该命令是决定是否在当前坐标轴中只能增加新的图形对象还是覆盖原有图形对象。测试保持状态命令为ishold。该命令可以设置当前坐标轴与当前图形的属性NextPlot。若一图形窗口中有多个坐标轴,则每个坐标轴有自己的保持状态。 用法 hold on 保留当前图形与当前坐标轴的属性值,后面的图形命令只能在当前存在的坐标轴中增加图形,即设置当前坐标轴属性NextPlot为add。当必要的时候,坐标轴的一些属性在增加新图时还是要进行相应的改变。例如,当新图形的数据范围超出了当前坐标轴的范围,则命令会自动地改变坐标轴的范围,使能显示新图形。 hold off 在画新图形之前,重新设置坐标轴的属性为缺省值。off是命令hold命令的缺省值。设置当前坐标轴的属性NextPlot为replace。 hold 在on与off之间转换。即在增加图形与覆盖图形之间切换。当坐标轴不存在时,则生成一坐标轴。同时使当前坐标轴属性NextPlot在add与replace之间切换。 命令3 gcf 功能 获得当前图形窗口的句柄。 用法 h = gcf 返回当前图形窗口的句柄。当前窗口为由命令plot、title与surf等得到的结果。若不存在图形窗口,则系统自动地生成一个,并返回它的句柄。若用户想当图形窗口不存在时,也不创建新的,则输入:get(0,'CurrentFigure') 命令4 clf 功能 清除当前图形窗口。该命令在命令窗口中执行与在回调程序中执行效果是一样的,即它不能区别由callback设置的属性 HandleVisibility,也就是说,当它从一回调程序中执行时,命令clf仅仅删除属性HandleVisibility为on的图形对象。 用法 clf 清除所有当前图形窗口与窗口中的所有那些句柄为不隐藏(例如它们的属性HandleVisibility为on)的图形对象。 clf reset 无条件地清除当前图形窗口中所有的图形对象,且重新设置所有图形窗口属性为缺省值,除了属性Position,Units,PaperPosition,PaperUnits。 命令5 close 功能 删除指定的图形窗口。 用法 close 删除当前的图形窗口。 close(h) 删除由句柄h指定的图形窗口。若h为一向量或矩阵,则close全部删除其中每一分量指定的图形句柄。 close name 删除指定名字name的窗口。 close all 删除所有没有隐藏的图形。 close all hidden 删除所有具有隐藏的图形。 status = close(…) 若成功地删除了指定的对象则返回status=1,否则返回0。 命令6 newplot 功能 做好开始画新图形对象的准备。在高级图形m-文件的开始使用该命令,用于确定在哪一个图形窗口与坐标轴中输出图形。调用命令newplot能改变当前窗口与坐标轴。基本上,当要在已经存在的窗口与坐标轴中画图,有三个选项可选: 1.没有改变任何属性与删除任何对象,直接在当前坐标轴中增加新的图形对象; 2.在画图形的对象之前,删除所有存在于当前坐标轴中的,句柄为非隐藏的对象; 3.在画图形的对象之前,无条件删除所有的存在于当前坐标轴中的对象(不管句柄是否为隐藏),同时设置大部分的属性为缺省值; 4.首先,newplot读取当前图形的属性NextPlot的属性值(关于该属性的含义参见figure或axes的属性表),再执行相应的动作; 5.然后,newplot确定在哪一个窗口中画图,它读取当前图形的属性NextPlot的属性值,执行相应的操作。 用法 newplot 画好图形窗口与坐标轴,后面的图形命令就可以在该坐标轴内画图。 h = newplot 效果如上,且返回当前坐标轴的句柄给h。 7.4 颜色与光照模式命令7.4.1 颜色控制命令命令1 colormap 功能 设置或获取当前色图。色图为一个m*3的、元素在0到1之间的实数的矩阵,每一行为定义一个颜色的RGB向量。色图矩阵的第k行定义了第k个颜色,其中 map(k,:)=[r(k) g(k) b(k)]指定了组成该颜色中红色、绿色、兰色的强度。 用法 colormap(map) 通过矩阵map设置色图。若矩阵map中的元素不在[0 1]区间之内,则返回一个错误。在目录color中的m-文件能够生成许多色图,每一个m-文件能够接受颜色数作为函数参数,例如命令 colormap(hsv(64))生成了有64种颜色的hsv色图。若用户没有指定颜色数,例如命令colormap(hsv),生成与当前色图中颜色数相同的hsv色图。MATLAB支持的色图见表7-14。 表7-14
例7-52 colormap('default') 设置当前色图为缺省色图。 cmap = colormap 获取当前色图矩阵。 命令2 bone 功能 生成带淡兰色的灰度刻度化的色图。 用法 bone(m) 返回个一个阶数为m*3的包含“bone”的色图。 bone 返回一个与当前色图行数相同的色图。 命令3 cool 功能 生成带阴影的青色和品红的色图。 用法 cool(m) 返回一个阶数为m*3的包含“cool”的色图。 cool 返回一个与当前色图行数相同的色图。 命令4 copper 功能 生成线性铜色色图。 用法 copper(m)返回一个阶数为m*3的包含“copper”的色图。 copper 返回一个与当前色图行数相同的色图。 命令5 flag 功能 生成一个颜色顺序为红、白、兰、黑的色图。 用法 flag(m)返回一个阶数为m*3的包含“flag”的色图。增加m的值,会增加色图的颗粒程度。 flag 返回一个与当前色图函数相同的色图。 命令6 gray 功能 生成一个线性灰度化的色图。 用法 gray(m)返回个一个阶数为m*3的包含灰度化的的色图。 gray 返回一个与当前色图函数相同的色图。 命令7 hot 功能 生成一个颜色顺序为黑、红、黄、白的色图。 用法 hot(m)返回个一个阶数为m*3的包含“hot”的色图。 hot 返回一个与当前色图函数相同的色图。 命令8 hsv 功能 生成一个包含色度-饱和度值的色图。一个hsv色图包含各种饱和色度颜色的色度的成分。其颜色从红色到黄色、绿色、青色、蓝色、品红,最后返回红色。该色图对于显示周期函数很有用处。 用法 hsv(m)返回个一个阶数为m*3的包含hsv的色图。 hsv 返回一个与当前色图函数相同的色图。 命令9 jet 功能 不同于hsv色图的另外一种色图。 用法 jet(m)返回个一个阶数为m*3的,与hsv(m)不同的色图,用于显示NCSA流体激光图片。 jet 返回一个与当前色图函数相同的色图。 命令10 pink 功能 生成一个带柔和阴影粉红色图。 用法 pink(m)返回一个阶数为m*3的包含“pink”的色图。 pink 返回一个与当前色图函数相同的色图。 命令11 prism 功能:生成一个三棱镜色图。如同hsv色图一样,prism色图中的颜色使用顺序是一样的,不同的是,命令prism重复使用它的六中颜色,而命令hsv是连续地变换它的颜色。 用法 prism(m)返回一个阶数为m*3的包含六种循环使用的颜色:红色、橙色、黄色、绿色、蓝色、紫色。 prism 这种没有任何输入输出参量的形式,改变当前坐标轴中的线对象的颜色为三棱镜中的颜色。 7.4.2 色图控制命令命令1 brighten 功能 增亮或变暗色图。 用法 brighten(beta) 增亮或变暗当前的色图。若0<beta<1,则增亮色图;若-1<beta<0,则变暗色图。改变的色图将代替原来的色图,但本质上是相同的颜色。 brighten(h,beta) 对指定的句柄对象h中的子对象进行操作。 newmap = brighten(beta) 该命令没有改变当前图形的亮度,而是返回变化后的色图给newmap。 newmap = brighten(cmap,beta) 该命令没有改变指定色图cmap的亮度,而是返回变化后的色图给newmap。 命令2 colorbar 功能 显示能指定颜色刻度的颜色条。且调整当前坐标轴,以适应当前的颜色条。 用法 colorbar 更新最近生成的颜色条。或若当前坐标轴没有一颜色条,则在右边显示一垂直的颜色条。 colorbar('vert') 增加一垂直的颜色条到当前的坐标轴。 colorbar('horiz') 增加一水平的颜色条到当前的坐标轴。 colorbar(h) 用坐标轴h来生成一颜色条。若坐标轴的宽度大于高度,则颜色条是水平放置的。 h = colorbar(…)返回一颜色条句柄h,该句柄是一坐标轴对象。 colorbar(…,'peer',axes_handle) 生成一与坐标轴axes-handle有关的颜色条,代替当前的坐标轴。 命令3 contrast 功能 提高灰度色图的对比度。该命令可以增强图像的对比度。 用法 cmap = contrast(X) 返回一灰度色图,该色图与当前色图有相同的维数。参量cmap为生成的灰度色图。 cmap = contrast(X,m) 返回维数为m*3的灰度色图cmap。 例7-53 >>load clown; >>cmap = contrast(X); >>image(X); >>colormap(cmap);
命令4 rgbplot 功能 画出色图。 用法 rgbplot(cmap) 画出维数为m*3的色图矩阵cmap的每一列,矩阵的第一列为红色强度,第二列为绿色强度,第三列为蓝色强度。 命令5 diffuse 功能 漫反射率。 用法 R = diffuse(Nx,Ny,Nz,S) 返回曲面的漫反射率向量[Nx,Ny,Nz],S为一三维向量,用于定义光源的方向;S也可以为球面坐标系中的二维向量[Theta,Phi]。 Lambert定律:R = cos(PST),其中PST为曲面法线与光源方向之间夹角。 命令6 specular 功能 镜面反射率。 用法 R = specular(Nx,Ny,Nz,S,V,spread) 返回一曲面的镜面反射率向量[Nx,Ny,Nz],向量参量S与V分别用于指定光源位置与观察点的位置。它们可以为三维直角坐标系向量[x,y,z]或者为二维球面向量[Theta,Phi]。当标准向量的方向为(S+V)/2,则镜面的高光效果最强。第六个参量spread为镜面反射扩散系数。 命令7 surfl 功能 三维带光照模式的阴影图。图形的色泽取决于曲面的漫反射、镜面反射与环境光照模式。 用法 surfl(…)效果与命令surf(…)基本上一样,除了它受光源影响的曲面之外。 surfl(Z)、surfl(X,Y,Z)、surfl(Z,S)、surfl(X,Y,Z,S)、surfl(X,Y,Z,S,K) 这些都是有效的使用形式。若参数中有S,则为一三维向量[Sx,Sy,Sz],用于指定光源的方向。S也可视为点坐标系下的二维向量[AZ,EL]。S的缺省值为从当前观察方向逆时针旋转45度。使用命令组cla;hold on;view(AZ,EL);surfl(…);hold off等可画出视角方向为(AZ,EL)的带光照模式的曲面图。第五参数K=[ka,kd,ks, spread]指定环境光、漫反射光、镜面反射光、扩散系数等的强弱。 surfl(…,'light') 用LIGHT对象生成一带颜色的、带光照模式的曲面。该命令可以生成与用缺省光照模式不同效果的曲面。 surfl(…,'cdata') 指定的曲面的反射光的颜色为cdata。 H = surfl(…) 返回曲面与光源的句柄 |
|