第5章图形处理功能.ppt

上传人:本田雅阁 文档编号:2499483 上传时间:2019-04-04 格式:PPT 页数:85 大小:1.08MB
返回 下载 相关 举报
第5章图形处理功能.ppt_第1页
第1页 / 共85页
第5章图形处理功能.ppt_第2页
第2页 / 共85页
第5章图形处理功能.ppt_第3页
第3页 / 共85页
亲,该文档总共85页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5章图形处理功能.ppt》由会员分享,可在线阅读,更多相关《第5章图形处理功能.ppt(85页珍藏版)》请在三一文库上搜索。

1、第5章 图形处理功能 5.1 二维图形 5.2 三维图形 5.3 三维图形的精细处理 5.4 图形对象及其句柄 5.5 图形光照和材质处理 5.6 图形显示与动画制作,教学目标,MATLAB语言除了有强大的矩阵处理功能之外,它的绘图功能也是相当强大的。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。,教学重点,基本的绘图命令 各种图形注释方法 三维图形的绘制方法,5.1 二维图形,5.1.1绘制二维曲线的基本函数,1. plot函数的基本用法 plot函数的基本调用格式为: plot(x,y) 说明: (1)当x

2、和y都为向量时,x和y必须具有同样的长度,分别用于存储x坐标和y坐标数据。,例:在0X2区间内,绘制曲线y=2e-0.5xsin(2x)。 程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y) 例:绘制参数方程曲线。 程序如下: t=-pi:pi/100:pi; x=t.*cos(3*t); y=t.*sin(t).*sin(t); plot(x,y);,5.1 二维图形,5.1.1绘制二维曲线的基本函数,1. plot函数的基本用法 plot(x,y) 说明: (2)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不

3、同色彩的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。如果y是一个行列均与x的长度相等的方阵,则以每列作为一组绘图数据。,【例】当x为矢量,y为矩阵时绘制多重曲线图。 程序如下: x=0:pi/50:2*pi; y=sin(x); y(2,:)=0.6*sin(x); y(3,:)=0.3*sin(x); plot(x,y),5.1 二维图形,5.1.1绘制二维曲线的基本函数,1. plot函数的基本用法 plot(x,y) 说明: (3)当x是矩阵,y是向量时,则按类似(2)的规则,只是将x中的每一行或列对应于y进行绘图。,【例】当x为矩阵,y为矢量时绘制多重曲线图。 x

4、=0:pi/50:2*pi; x(2,:)=pi./4:pi/50:(2*pi+pi/4); x(3,:)=pi/2:pi/50:(2*pi+pi/2); y=sin(x(1,:); plot(x,y , -o),5.1 二维图形,5.1.1绘制二维曲线的基本函数,1. plot函数的基本用法 plot(x,y) 说明: (4)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,【例】当x和y为同样大小的矩阵时,绘制多重曲线图。 x=0:pi/50:2*pi; x(2,:)=pi/4:pi/50:2*pi+pi/4; x(3,:)=pi/2:pi/50

5、:2*pi+pi/2; y=sin(x(1,:); y(2,:)=0.6*sin(x(1,:); y(3,:)=0.3*sin(x(1,:); plot(x,y) x=x; y=y; figure %创建新的图形窗口 plot(x,y),5.1 二维图形,5.1.1绘制二维曲线的基本函数,2.含多个输入参数的plot函数 含多个输入参数的plot函数调用格式为: plot(x1,y1,x2,y2,xn,yn) plot(x1,y1,选项1,x2,y2, 选项2,xn,yn,选项n) 说明:这种用法把y1对于x1、y2对于x2、等的图线绘在一幅图形上,而且可以分别采用不同的图线形式。这种多组变量

6、绘图的优点是允许将不同大小的矩阵或矢量的图形绘制在一幅图形上。,选项n是用来指定曲线的色彩、线型和数据点型参数。,plot(x1,y1,选项1,x2,y2, 选项2,xn,yn,选项n),如: plot(x1,y1,b+-,x2,y2, xr,x3,y3,*g),在指定线型、颜色和数据点型三种属性时应注意: (1)3种属性的符号必须放在同一个字符串中; (2)每条曲线可以只指定其中的一个属性,也可以同时指定两个 或3个属性。 (3)属性的先后顺序无关。 (4)每条曲线指定的属性中同类属性不能有两个以上。,例:用不同线型和颜色在同一坐标内绘制曲线y=2e-0.5xsin(2x)及其包络线。 程序

7、如下: x=(0:pi/100:2*pi); y1=2*exp(-0.5*x)*1,-1; y2=2*exp(-0.5*x).*sin(2*pi*x); x3=(0:12)/2; y3=2*exp(-0.5*x3).*sin(2*pi*x3); plot(x,y1,g:,x,y2,b-,x3,y3,rp);,5.1 二维图形,5.1.1绘制二维曲线的基本函数,3.双纵坐标函数plotyy plotyy函数是MATLAB 5.X新增的函数。它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为: plotyy(x1,y1,x2,y2) 其中x1_y1对应一条曲线,x2_y2对

8、应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1_y1数据对,右纵坐标用于x2_y2数据对。,例:用不同标度在同一坐标内绘制曲线 y1=e-0.5xsin(2x)及曲线y2=1.5e-0.1xsin(x)。 程序如下: x1=0:pi/100:2*pi; x2=0:pi/100:3*pi; y1=exp(-0.5*x1).*sin(2*pi*x1); y2=1.5*exp(-0.1*x2).*sin(x2); plotyy(x1,y1,x2,y2);,5.1 二维图形,5.1.2 绘制图形的辅助操作,1.图形标注,有关图形标注函数的调用格式为: title(图形名称) xlabe

9、l(x轴说明) ylabel(y轴说明) text(x,y,图形说明) legend(图例1,图例2,),标注举例: x=linspace(-3,5,100) y=cos(x); z=sin(x); plot(x,y,r+,x,z,b-) title(一条正弦曲线和一条余弦曲线) xlabel(x的取值范围) ylabel(Y和Z的值) legend(正弦, 余弦 ),2. 坐标控制 函数的调用格式为: axis(xmin xmax ymin ymax zmin zmax) axis函数功能丰富,常用的用法还有: axis equal 纵、横坐标轴采用等长刻度 axis square 产生正方

10、形坐标系(缺省为矩形) axis auto 使用缺省设置 axis off 取消坐标轴 axis on 显示坐标轴 书中P129,例5-47,5-48.,5.1 二维图形,5.1.2 绘制图形的辅助操作,3. 坐标网格的填加 在图形绘制过程中,为了精确地知道图形上某点的坐 标,需要绘制坐标网格来定位,MATLAB 语言中提供了 grid函数来实现这一功能:,5.1 二维图形,5.1.2 绘制图形的辅助操作,grid off命令关闭坐标网格; grid on命令打开坐标网格 grid minor命令使用更细化的网格;,box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态

11、之间进行切换。,举例: x=linspace(-5,5,100); y=x.4+22*x.2-6*x+10; plot(x,y) grid on box on,4. 图形保持 一般情况下,绘图命令每执行一次就刷新当前图形窗 口,图形窗口原有图形将不复存在。若希望在已存在的图 形上再继续添加新的图形,可使用图形保持命令hold。 hold on/off命令控制是保持原有图形还是刷新原有图形, 不带参数的hold命令在两种状态之间进行切换。它们一般是 成对出现的。,5.1 二维图形,5.1.2 绘制图形的辅助操作,例:用图形保持功能在同一坐标内绘制曲线y=2e-0.5xsin(2x)及其包络线。

12、程序如下: x=(0:pi/100:2*pi); y1=2*exp(-0.5*x)*1,-1; y2=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y1,b:); axis(0,2*pi,-2,2); %设置坐标 hold on; %设置图形保持状态 plot(x,y2,k); legend(包络线,包络线,曲线y); hold off; %关闭图形保持 grid %网格线控制,5.1 二维图形,5.1.2 绘制图形的辅助操作,5. 图形窗口的分割(绘制子图形),在缺省情况下,一个图形窗口中只有一个坐标轴,使用subplot函数可以在一个图形窗口上绘制多个图形,其调用格

13、式为: subplot(m,n,p) 功能:将图形窗口分成m*n个子窗口并把第p个子窗口作为当前窗口。子窗口的排列顺序为从左上角开始按行排列。,例:在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。 程序如下: x=linspace(0,2*pi,60); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); plot(x,y);title(sin(x); axis (0,2*pi,-1,1); subplot(2,2,2); plot(x,z);title(cos(

14、x); axis (0,2*pi,-1,1); subplot(2,2,3); plot(x,t);title(tangent(x); axis (0,2*pi,-40,40); subplot(2,2,4); plot(x,ct);title(cotangent(x); axis (0,2*pi,-40,40);,对图形窗口灵活分割。请看下面的程序。 x=linspace(0,2*pi,60); y=sin(x);z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); %选择22个区中的1号区 st

15、airs(x,y);title(sin(x)-1);axis (0,2*pi,-1,1); subplot(2,1,2); %选择21个区中的2号区 stem(x,y);title(sin(x)-2);axis (0,2*pi,-1,1); subplot(4,4,3); %选择44个区中的3号区 plot(x,y);title(sin(x);axis (0,2*pi,-1,1); subplot(4,4,4); %选择44个区中的4号区 plot(x,z);title(cos(x);axis (0,2*pi,-1,1); subplot(4,4,7); %选择44个区中的7号区 plot(x

16、,t);title(tangent(x);axis (0,2*pi,-40,40); subplot(4,4,8); %选择44个区中的8号区 plot(x,ct);title(cotangent(x);axis (0,2*pi,-40,40);,1. 其他形式的线性直角坐标图 在线性直角坐标系中,其他形式的图形有条形 图、阶梯图、杆图和填充图等,所采用的函数分 别是: bar(x,y,选项) stairs(x,y,选项) stem(x,y,选项) fill(x1,y1,选项1,x2,y2,选项2,),5.1 二维图形,5.1.3 绘制二维图形的其他函数,例:分别以条形图、填充图、阶梯图和杆图

17、形式绘制曲线y=2e-0.5x。 程序如下: x=0:0.35:7; y=2*exp(-0.5*x); subplot(2,2,1);bar(x,y,g); title(bar(x,y,g);axis(0,7,0,2); subplot(2,2,2);fill(x,y,r); title(fill(x,y,r);axis(0,7,0,2); subplot(2,2,3);stairs(x,y,b); title(stairs(x,y,b);axis(0,7,0,2); subplot(2,2,4);stem(x,y,k); title(stem(x,y,k);axis(0,7,0,2);,5.

18、1 二维图形,5.1.3 绘制二维图形的其他函数,1. 其他形式的线性直角坐标图 bar(x,y,选项) 说明:x必须为向量,按x中指定的位置绘制y中每一元素的条形。当y为矩阵时,bar绘制的条形图以分组group或叠加stacked的形式表现,矩阵中每一行的元素绘制在一组中,每一列元素绘制在每组中相应的位置上(即同样颜色的条形表示同一列数据)。x向量的个数与y矩阵的行数相等。,例:绘制指定x坐标的条形图。 程序如下: x=1 2 4 7 10; y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2; subplot(1,2,1) bar(x,y) subplot(1,2,2) ba

19、r(x,y,stack),5.1 二维图形,5.1.3 绘制二维图形的其他函数,2极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标半径,选项的内容与plot函数相似。 例:绘制=sin(2)cos(2)的极坐标图。 程序如下: theta=0:0.01:2*pi; rho=sin(2*theta).*cos(2*theta); polar(theta,rho,k);,3对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,

20、) semilogy(x1,y1,选项1,x2,y2,选项2,) loglog(x1,y1,选项1,x2,y2,选项2,) 说明:三者坐标轴的选取不同。semilogx函数使用半对数坐标,x轴为常用对数刻度,而y轴仍保持线性刻度。semilogy函数也使用半对数坐标,y轴为常用对数刻度,而x轴仍保持线性刻度。loglog函数使用全对数坐标,x,y轴均采用常用对数刻度。,5.1 二维图形,5.1.3 绘制二维图形的其他函数,例:绘制y=10x2的对数坐标图并与直角线性坐标图进行比较。 程序如下: x=0:0.1:10; y=10*x.*x; subplot(2,2,1);plot(x,y); t

21、itle(plot(x,y);grid on; subplot(2,2,2);semilogx(x,y); title(semilogx(x,y); grid on; subplot(2,2,3);semilogy(x,y); title(semilogy(x,y); grid on; subplot(2,2,4);loglog(x,y); title(loglog(x,y);grid on;,4. 其他形式的图形 MATLAB提供的绘图函数还有很多,例如,用来表示各元 素占总和的百分比的饼图。调用格式: pie(x):使用x中的数据绘制饼图,x中的每一元素用饼图中 的一个扇区表示。 pie(

22、x,explode):将一些扇区从饼图中分离出来,explode为 一个与x尺寸相同的矩阵,其非零元素所对应的x矩 阵中的元素从饼图中分离出来。,5.1 二维图形,5.1.3 绘制二维图形的其他函数,例:绘制图形 (1)某次考试优秀、良好、中等、及格、不及格的人数分别为:7,17,23,19,5,试用饼图作成绩统计分析。 (2)将不及格的人数从图中分离出来显示。 程序如下: subplot(1,2,1); pie(7,17,23,19,5); title(饼图);legend(优秀,良好,中等,及格,不及格); subplot(1,2,2); p=0 0 0 0 1; pie(7,17,23,

23、19,5,p);,5.2 三维图形,最基本的三维图形函数为plot3。它与plot函数用法十分相 似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,xn,yn,zn,选项n) 说明:其中每一组x,y,z组成一组曲线的坐标参数,选项的 定义和plot函数相同。当x,y,z是同维向量时,则x,y,z对应 元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z 对应列元素绘制三维曲线,曲线条线等于矩阵列数。,5.2.1 绘制三维曲线图的基本函数,例:绘制空间曲线。 程序如下: t=0:pi/50:2*pi; x=8*cos(t); y=4*sqrt(2)*s

24、in(t); z=-4*sqrt(2)*sin(t); plot3(x,y,z,p); title(Line in 3-D Space); text(0,0,0,origin); xlabel(X),ylabel(Y),zlabel(Z); grid;,例:绘制x、y和z均为矩阵时的三维曲线图。 程序如下: X,Y=meshgrid(-2:0.1:2); %产生供三维绘图的网格矩阵x、y为41*41的矩阵 Z=X.*exp(-X.2-Y.2); plot3(X,Y,Z) grid on,MATLAB提供了一组用于生成三维绘图数据的函 数: 1、利用meshgrid函数生成 x=a:dx:b;

25、y=c:dy:d; X,Y=meshgrid(x,y); 说明:上述语句执行后,将x(1m)向量和y(1n)向量转换为(nm)的矩阵,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。根据每一个网格点上的x,y坐标求函数值z,则得到函数值矩阵Z。,5.2 三维图形,5.2.2 三维绘图数据的产生,5.2 三维图形,5.2.2 三维绘图数据的产生,例:已知6x30,15y36,求不定方程2x+5y=126的整数解。程序如下: x=7:29; y=16:35; x,y=meshgrid(x,y); %在7,2916,35区域生成网格坐标x,

26、y 大小为20*23矩阵 z=2*x+5*y; k=find(z=126); %找出解的位置 x(k),y(k) %输出对应位置的x,y即方程的解 输出结果为: ans= 8 13 18 23 ans=22 20 18 16 即方程共有4组解: (8,22),(13,20),(18,18),(23,16),5.2 三维图形,5.2.2 三维绘图数据的产生,2、利用peaks函数生成(书中119页) 用于创建双峰函数和用双峰函数绘图,其基本调用格式为: x,y,z=peaks(n) 说明:分别创建x,y,z三个均为n*n阶的方阵,其中x的每一列的元素都相同,每一行的元素均为在-3,3区间内的n等

27、分,y的行列元素与x刚好相反,z为x和y的函数,n的缺省值为49。,MATLAB提供了mesh函数来绘制三维网格图,即不着色 的表面图。它所产生的网格表面由生成x_y平面的网格 对应的z坐标定义,图形由邻近点用直线连接而成。 mesh函数的调用格式为: (1) mesh(x,y,z) 绘制分别以矩阵x,y,z的元素值为坐标的三维网格图,x,y,z必须为同阶矩阵。 (2)mesh(z)绘制分别以m*n阶矩阵z的行数和列数为x和y坐标(1:m,1:n),以z的对应元素值为z坐标的三维网格图。 例:mesh(peaks(20),5.2 三维图形,5.2.3 绘制三维网格图的函数,5.2 三维图形,5

28、.2.3绘制三维网格图的函数,MATLAB还提供了另外一些绘制三维网格图函数: meshc将网格图与等高线一起绘制。 meshz在绘制网格图的同时绘制零基准平面图。,例:绘制各种网格图 subplot(2,2,1); mesh(peaks(30); subplot(2,2,2); meshc(peaks(30); subplot(2,2,3); meshz(peaks(30);,5.2.3 绘制三维网格图的函数,MATLAB提供了三个绘制着色表面图的命令:surf、 surfc和surfl,其中surf为绘制着色表面图的基本命令, surfc为绘制带等高线的着色表面图,surfl可以控制表面

29、图的光照效果。 surf函数的调用格式: (1) surf(x,y,z) 绘制分别以矩阵x,y,z的元素值为坐标的三维网格图,x,y,z必须为同阶矩阵。 (2)surf(z)绘制分别以m*n阶矩阵z的行数和列数为x和y坐标(1:m,1:n),以z的对应元素值为z坐标的三维网格图。 (3)surf(x,y,z,c)用c定义的颜色绘制三维表面图,5.2 三维图形,5.2.4 绘制三维着色表面图的函数,5.2.4 绘制三维着色表面图的函数,例:绘制各种着色图 subplot(2,2,1); surf(peaks(30); subplot(2,2,2); surfc(peaks(30); subplo

30、t(2,2,3); surfl(peaks(30);,plot3、mesh和surf函数之间的比较: plot3绘制的三维曲线图是由三维曲线组合而成的。 mesh绘制的三维网格图中线条有颜色,线条间补面无颜色。 surf绘制的三维着色图中线条是黑色的,线条间的补面有颜色。 其中mesh和surf绘制的图形颜色都是沿z轴变化的。,例:用三维曲面图表现函数z=sin(y)cos(x)。 x=0:0.1:2*pi; x,y=meshgrid(x); %63*63矩阵 z=sin(y).*cos(x); subplot(2,2,1) mesh(x,y,z); xlabel(x-axis),ylabel

31、(y-axis),zlabel(z-axis); title(mesh); subplot(2,2,2) surf(x,y,z); xlabel(x-axis),ylabel(y-axis),zlabel(z-axis); title(surf); subplot(2,2,3) plot3(x,y,z); xlabel(x-axis),ylabel(y-axis),zlabel(z-axis); title(plot3-1); grid;,例:在xy平面内选择区域-8,8-8,8,绘制函数的 4种三维曲面图。 x,y=meshgrid(-8:0.5:8); %33*33矩阵 z=sin(sqr

32、t(x.2+y.2)./sqrt(x.2+y.2+eps); subplot(2,2,1); meshc(x,y,z); title(meshc(x,y,z) subplot(2,2,2); meshz(x,y,z); title(meshz(x,y,z) subplot(2,2,3); surfc(x,y,z) title(surfc(x,y,z) subplot(2,2,4); surfl(x,y,z) title(surfl(x,y,z),条形图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、pie3和fill3。此外,还有三维曲面的等高线图。等高线图分二维

33、和三维两种形式,分别使用函数contour和contour3绘制。,5.2 三维图形,5.2.5 其他三维图形,例:绘制三维图形: (1)绘制魔方阵的三维条形图。 (2)以三维杆图形式绘制曲线y=2sin(x)。 (3)已知x=2347,1827,2043,3025,绘制三维饼图。 (4)用随机的顶点坐标值画出五个黄色三角形。 程序如下: subplot(2,2,1); bar3(magic(4) subplot(2,2,2); y=2*sin(0:pi/10:2*pi); stem3(y); subplot(2,2,3); pie3(2347,1827,2043,3025); subplot

34、(2,2,4); fill3(rand(3,5),rand(3,5),rand(3,5), y ),例:绘制多峰函数的瀑布图和等高线图。 程序如下: subplot(1,2,1); X,Y,Z=peaks(30); waterfall(X,Y,Z) xlabel(X-axis),ylabel(Y-axis),zlabel(Z-axis); subplot(1,2,2); contour3(X,Y,Z,12,k); %其中12代表高度的等级数 xlabel(X-axis),ylabel(Y-axis),zlabel(Z-axis);,5.3.1 色彩处理,5.3 三维图形的精细处理,1. 颜色的

35、向量表示 MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。 2. 色图 (书中P124页) 色图是m3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。 除plot及其派生函数外,mesh、surf等函数均使用色图着色。图形窗口色图的设置和改变,使用函数: colormap(m) 其中m代表色图矩阵。,例:表面图形的颜色映射 x,y=meshgrid(-8:0.5:8); z=sin(sqrt(x.2+y.2)./sqrt(x.2+y.2+eps); mesh(x,y,z); title(mesh(x,y,z)

36、colormap(1 0 1;0.5 0 0;0 1 0),3. 三维着色图形的表面渲染 三维着色图实际上就是在网格图的每一个网格片上涂 上颜色。surf函数用缺省的着色方式对网格片着色。除 此之外,还可以用shading命令进行表面色彩的渲染。 (1)shading flat:网格片的颜色由线段的端点或表面角上的色彩值决定。 (2)shading facted (默认缺省状态) (3)shading interp:网格的每个线段和表面上的颜色都是变化的,该参数通过对线段或表面上的颜色进行插值,使得整个表面上的颜色看上去是连续变化的。,5.3 三维图形的精细处理,5.3.1 色彩处理,例:3种

37、图形着色方式的效果展示。 程序如下: z=peaks(30); subplot(1,3,1);surf(z); subplot(1,3,2); surf(z);shading flat; subplot(1,3,3);surf(z);shading interp;,在MATLAB中,常数NaN定义为非数,可以用于表示那些不可使用的数据,利用这种特性,可以将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。,5.3 三维图形的精细处理,5.3.2 图形的裁剪处理,例1:要削掉正弦波顶部或底部大于0.5的部分,可使用下面的

38、程序: x=0:pi/10:4*pi; y=sin(x); i=find(abs(y)0.5); x(i)=NaN; plot(x,y);,例2:绘制两个球面,其中一个球在另一个球里面,将外面的 球裁掉一部分,使得能看见里面的球。 程序如下: x,y,z=sphere(20);%生成外面的大球 z1=z; z1(:,1:4)=NaN; %将大球裁掉一部分 surf(3*x,3*y,3*z1); %生成里面的小球 hold on z2=z; surf(1.5*x,1.5*y,1.5*z2); grid on hold off 补充:sphere()用于产生三维球面数据,用法x,y,z=spher

39、e(n)。该函数 将产生(n+1)*(n+1)矩阵x,y,z,采用这3个矩阵可以绘制出圆心位于原点、 半径为1的单位球体。,5.4 图形对象及其句柄,5.4.1 图形对象概述,MATLAB提供了强大的图形处理功能,前面介绍的基本图形处理功能大多数只使用了MATLAB的高级函数,如plot,mesh等。高级函数一般是对整个图形窗口进行操作的,实际上MATLAB还提供了许多用于创建以及操作图形对象的底层函数,,底层函数使用户可以对图形的一个或几个对象进行独立操作,而不影响图形的其他部分,使图形处理更加灵活。,MATLAB的图形对象是指构成图形的各个基本要素,它们是图形系统中最基本、最底层的单元。

40、这些对象包括计算机屏幕、图形窗口(Figure)、坐标轴(Axes)、用户菜单(Uimenu)、用户控件(Uicontrol)、曲线(Line)、曲面(Surface)、文字(Text)、图像(image)、光源(Light)、区域块(Patch)和方框(Rectangle)。系统将每一个对象按树型结构组织起来。每个图形对象都可以被独立地操作。,5.4 图形对象及其句柄,5.4.1 图形对象概述,(各层次图形对象是相互关联的,关系为父子或兄弟关系。 一般要先创建父对象,然后再建立子对象和孙对象。),根据各对象的相互关系可以构成下图所示的树状层次,在MATLAB的图形系统中,所有的图形操作都是针

41、对图 形对象而言的,在创建每一个图形对象时,都为该对象 分配唯一的一个值,称其为图形对象句柄(Handle)。句 柄是图形对象的唯一标识符。 句柄的优点:利用句柄既可以操纵一个已经存在的图形 对象的属性,也可以在建立图形对象时指定属性的值, 特别是对指定图形对象句柄的操作不会影响同时存在的 其他图形对象。,5.4 图形对象及其句柄,5.4.2 图形对象句柄,1、图形对象句柄的获取 (1) 当前对象句柄的获取 MATLAB提供了3个用于获取当前已有图形对象句柄的函数: gcf 获取当前图形窗口的句柄 gca 获取当前坐标轴的句柄 gco 获取最近被单击的图形对象的句柄,5.4 图形对象及其句柄,

42、5.4.2 图形对象句柄,【例】使用命令获取图形对象的句柄,如图所示。 x=0:0.1:2*pi; y=sin(x).*exp(-x); plot(x,y) text(pi,0,leftarrowexp(-x)*sin(x)=0) h_fig=gcf %获取图形窗口的句柄 h_axes=gca %获取坐标轴的句柄 h_obj=gco %获取最近点击对象的句柄,5.4 图形对象及其句柄,5.4.2 图形对象句柄,1、图形对象句柄的获取 (2) 查找对象 用命令findobj可以快速查找所有对象,以及获取指定属性值的对象句柄。语法: h=findobj %返回根对象和所有子对象的句柄 h=find

43、obj(h_obj) %返回指定对象的句柄 h=findobj(PropertyName,PropertyValue) %返回符合指定属性值的对象句柄 h=findobj(h_obj, PropertyName, PropertyValue) %在指定对象及子对象中查找符合指定属性值的对象句柄 说明:h_obj为指定对象句柄;PropertyName为属性名;PropertyValue为属性值。,例:使用findobj命令获取上图中图形窗口对象的句柄。 findobj %返回根对象和所有子对象的句柄 h_text=findobj(h_fig,string,leftarrowexp(-x)*si

44、n(x)=0) %查找符合属性值的文字对象句柄,5.4 图形对象及其句柄,5.4.2 图形对象句柄,1、图形对象句柄的获取 (3) 追溯父对象和子对象的句柄 如果一个对象的句柄已知,则可以追溯到其父对象和子对象的句柄。语法如下: h_parent=get(句柄,parent) %追溯父对象的句柄h_children=get(句柄,children) %追溯子对象的句柄 例:追溯坐标轴对象的父对象和子对象。 h_children=get(h_axes,children) %子对象为文字对象和曲线对象 h_parent=get(h_axes,parent) %父对象为图形窗口对象,5.4 图形对象

45、及其句柄,5.4.2 图形对象句柄,2、图形对象句柄的删除 删除图形对象使用命令delete(句柄),该命令将删除句柄所指对象和所有子对象,而且不提示确认,使用时要小心。 【例】删除坐标轴。 delete(h_axes) findobj,5.4 图形对象及其句柄,5.4.3 图形对象属性的获取与设置,MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值。例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是- 、:、-.、-或none。,5.4 图形对象及其句柄,5.4.3 图形对象属性的获取与设置,1、图形对象属性的获取,get函数用于

46、获取指定对象的属性值。 语法: get(句柄) %获取句柄对象所有属性的当前值 get(句柄, PropertyName) %获取句柄对象指定属性的当前值 例:获取图形对象属性。 h_fig=figure(color,red,menubar,none,position,0,0,300,300) p=get(h_fig,position) c=get(h_fig,color) 程序分析:图形对象的颜色为红色,用RGB三元组表示。,5.4 图形对象及其句柄,5.4.3 图形对象属性的获取与设置,2、图形对象属性的设置,set函数用来设置对象的属性值。 语法: set(句柄) %显示句柄对象所有属性

47、和属性值 set(句柄, 属性名, 属性值 ) %设置句柄对象指定属性的属性值,h_fig=figure(color,red,position,0,0,300,300); x=0:0.1:2*pi; y=sin(x).*exp(-x); h_line=plot(x,y,b); title(y=exp(-x)*sin(x) set(gca,ygrid,on) %显示y网格 line1width=get(h_line,linewidth) %获取曲线宽度 set(h_line,linewidth,3) %设置曲线宽度 h_title =get(gca,title) %获取标题句柄 htitlefontsize=get(h_title,fontsize) %获取字体大小 set(h_title,fontsize,13) %设置标题字体大小 h_text1=text(pi,0,downarrow); %画向下箭头 text1pos=get(h_text1,position) %获取文字位置 h_text2=text(text1pos(1,1),text1pos(1,2)+0.025,exp(-x)*sin

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

当前位置:首页 > 其他


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