版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图形处理办法功能教学目标MATLAB语言除了有强大的矩阵处理功能之外,它的绘图功能也是相当强大的。本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。教学重点基本的绘图命令各种图形注释方法三维图形的绘制方法5.1二维图形绘制二维曲线的基本函数1.plot函数的基本用法plot函数的基本调用格式为:
plot(x,y)说明:(1)当x和y都为向量时,x和y必须具有同样的长度,分别用于存储x坐标和y坐标数据。
例:在0≤X≤2区间内,绘制曲线y=2e-0.5xsin(2πx)。程序如下:
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二维图形绘制二维曲线的基本函数1.plot函数的基本用法plot(x,y)说明:(2)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同色彩的曲线。曲线条数等于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二维图形绘制二维曲线的基本函数1.plot函数的基本用法plot(x,y)说明:(3)当x是矩阵,y是向量时,则按类似(2)的规则,只是将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:(2*pi+pi/2);y=sin(x(1,:));plot(x,y,'-o')5.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: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二维图形绘制二维曲线的基本函数2.含多个输入参数的plot函数含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,…,xn,yn)plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)说明:这种用法把y1对于x1、y2对于x2、……等的图线绘在一幅图形上,而且可以分别采用不同的图线形式。这种多组变量绘图的优点是允许将不同大小的矩阵或矢量的图形绘制在一幅图形上。选项n是用来指定曲线的色彩、线型和数据点型参数。
颜
色
符
号含
义数
据
点
型含
义线
型含
义b蓝色.点-实线g绿色xX符号:点线r红色++号-.点划线c蓝绿色h六角星形--虚线m紫红色*星号(空白)不画线y黄色s方形
k黑色d菱形
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(2πx)及其包络线。程序如下:
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二维图形绘制二维曲线的基本函数3.双纵坐标函数plotyyplotyy函数是MATLAB5.X新增的函数。它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为:
plotyy(x1,y1,x2,y2)
其中x1_y1对应一条曲线,x2_y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1_y1数据对,右纵坐标用于x2_y2数据对。
例:用不同标度在同一坐标内绘制曲线y1=e-0.5xsin(2πx)及曲线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(图形名称)xlabel(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([xminxmaxyminymaxzminzmax])axis函数功能丰富,常用的用法还有:axisequal纵、横坐标轴采用等长刻度axissquare产生正方形坐标系(缺省为矩形)axisauto使用缺省设置axisoff取消坐标轴axison显示坐标轴书中P129,例5-47,5-48.5.1二维图形5.1.2绘制图形的辅助操作
3.坐标网格的填加在图形绘制过程中,为了精确地知道图形上某点的坐标,需要绘制坐标网格来定位,MATLAB语言中提供了grid函数来实现这一功能:5.1二维图形5.1.2绘制图形的辅助操作gridoff命令关闭坐标网格;gridon命令打开坐标网格gridminor命令使用更细化的网格;boxon/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。举例:x=linspace(-5,5,100);y=x.^4+22*x.^2-6*x+10;plot(x,y)gridonboxon
4.图形保持一般情况下,绘图命令每执行一次就刷新当前图形窗口,图形窗口原有图形将不复存在。若希望在已存在的图形上再继续添加新的图形,可使用图形保持命令hold。
holdon/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。它们一般是成对出现的。5.1二维图形5.1.2绘制图形的辅助操作
例:用图形保持功能在同一坐标内绘制曲线y=2e-0.5xsin(2πx)及其包络线。程序如下: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]);%设置坐标holdon;%设置图形保持状态plot(x,y2,'k');legend('包络线','包络线','曲线y');holdoff;%关闭图形保持grid%网格线控制5.1二维图形5.1.2绘制图形的辅助操作5.图形窗口的分割(绘制子图形)在缺省情况下,一个图形窗口中只有一个坐标轴,使用subplot函数可以在一个图形窗口上绘制多个图形,其调用格式为:
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(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);%选择2×2个区中的1号区
stairs(x,y);title('sin(x)-1');axis([0,2*pi,-1,1]);subplot(2,1,2);%选择2×1个区中的2号区
stem(x,y);title('sin(x)-2');axis([0,2*pi,-1,1]);subplot(4,4,3);%选择4×4个区中的3号区
plot(x,y);title('sin(x)');axis([0,2*pi,-1,1]);subplot(4,4,4);%选择4×4个区中的4号区
plot(x,z);title('cos(x)');axis([0,2*pi,-1,1]);subplot(4,4,7);%选择4×4个区中的7号区
plot(x,t);title('tangent(x)');axis([0,2*pi,-40,40]);subplot(4,4,8);%选择4×4个区中的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绘制二维图形的其他函数
例:分别以条形图、填充图、阶梯图和杆图形式绘制曲线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.1二维图形5.1.3绘制二维图形的其他函数1.其他形式的线性直角坐标图bar(x,y,选项)说明:x必须为向量,按x中指定的位置绘制y中每一元素的条形。当y为矩阵时,bar绘制的条形图以分组group或叠加stacked的形式表现,矩阵中每一行的元素绘制在一组中,每一列元素绘制在每组中相应的位置上(即同样颜色的条形表示同一列数据)。x向量的个数与y矩阵的行数相等。
例:绘制指定x坐标的条形图。程序如下:
x=[124710];y=[986;258;629;587;942];subplot(1,2,1)bar(x,y)subplot(1,2,2)bar(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,…)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);title('plot(x,y)');gridon;subplot(2,2,2);semilogx(x,y);title('semilogx(x,y)');gridon;subplot(2,2,3);semilogy(x,y);title('semilogy(x,y)');gridon;subplot(2,2,4);loglog(x,y);title('loglog(x,y)');gridon;
4.其他形式的图形MATLAB提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图。调用格式:pie(x):使用x中的数据绘制饼图,x中的每一元素用饼图中的一个扇区表示。pie(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=[00001];pie([7,17,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)*sin(t);z=-4*sqrt(2)*sin(t);plot3(x,y,z,'p');title('Linein3-DSpace');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)gridon
MATLAB提供了一组用于生成三维绘图数据的函数:1、利用meshgrid函数生成x=a:dx:b;y=c:dy:d;[X,Y]=meshgrid(x,y);说明:上述语句执行后,将x(1×m)向量和y(1×n)向量转换为(n×m)的矩阵,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。根据每一个网格点上的x,y坐标求函数值z,则得到函数值矩阵Z。5.2三维图形5.2.2三维绘图数据的产生5.2三维图形5.2.2三维绘图数据的产生例:已知6<x<30,15<y<36,求不定方程2x+5y=126的整数解。程序如下:x=7:29;y=16:35;[x,y]=meshgrid(x,y);%在[7,29]×[16,35]区域生成网格坐标x,y
大小为20*23矩阵z=2*x+5*y;k=find(z==126);%找出解的位置x(k)’,y(k)’%输出对应位置的x,y即方程的解输出结果为:ans=8131823ans=22201816即方程共有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等分,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三维图形绘制三维网格图的函数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可以控制表面图的光照效果。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));subplot(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('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(sqrt(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。此外,还有三维曲面的等高线图。等高线图分二维和三维两种形式,分别使用函数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(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.颜色的向量表示
MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。
2.色图(书中P124页)
色图是m×3的数值矩阵,它的每一行是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)')colormap([101;0.500;010])
3.三维着色图形的表面渲染
三维着色图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令进行表面色彩的渲染。(1)shadingflat:网格片的颜色由线段的端点或表面角上的色彩值决定。(2)shadingfacted(默认缺省状态)(3)shadinginterp:网格的每个线段和表面上的颜色都是变化的,该参数通过对线段或表面上的颜色进行插值,使得整个表面上的颜色看上去是连续变化的。5.3三维图形的精细处理5.3.1色彩处理
例:3种图形着色方式的效果展示。程序如下:
z=peaks(30);subplot(1,3,1);surf(z);subplot(1,3,2);surf(z);shadingflat;subplot(1,3,3);surf(z);shadinginterp;
在MATLAB中,常数NaN定义为非数,可以用于表示那些不可使用的数据,利用这种特性,可以将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。5.3三维图形的精细处理5.3.2图形的裁剪处理例1:要削掉正弦波顶部或底部大于0.5的部分,可使用下面的程序: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);%生成里面的小球holdonz2=z;surf(1.5*x,1.5*y,1.5*z2);gridonholdoff
补充:sphere()用于产生三维球面数据,用法[x,y,z]=sphere(n)。该函数将产生(n+1)*(n+1)矩阵x,y,z,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。5.4图形对象及其句柄5.4.1图形对象概述MATLAB提供了强大的图形处理功能,前面介绍的基本图形处理功能大多数只使用了MATLAB的高级函数,如plot,mesh等。高级函数一般是对整个图形窗口进行操作的,实际上MATLAB还提供了许多用于创建以及操作图形对象的底层函数,,底层函数使用户可以对图形的一个或几个对象进行独立操作,而不影响图形的其他部分,使图形处理更加灵活。MATLAB的图形对象是指构成图形的各个基本要素,它们是图形系统中最基本、最底层的单元。
这些对象包括计算机屏幕、图形窗口(Figure)、坐标轴(Axes)、用户菜单(Uimenu)、用户控件(Uicontrol)、曲线(Line)、曲面(Surface)、文字(Text)、图像(image)、光源(Light)、区域块(Patch)和方框(Rectangle)。系统将每一个对象按树型结构组织起来。每个图形对象都可以被独立地操作。5.4图形对象及其句柄5.4.1图形对象概述Root(屏幕)Figure(图形窗口)Uicontrol(界面控件)Axes(坐标轴)Uimenu(界面菜单)Line(线条)Surface(表面)Rectangle(矩形)Patch(贴片)Image(图像)Text(文字)Light(光源)
图形对象的层次(各层次图形对象是相互关联的,关系为父子或兄弟关系。一般要先创建父对象,然后再建立子对象和孙对象。)根据各对象的相互关系可以构成下图所示的树状层次
在MATLAB的图形系统中,所有的图形操作都是针对图形对象而言的,在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。句柄是图形对象的唯一标识符。句柄的优点:利用句柄既可以操纵一个已经存在的图形对象的属性,也可以在建立图形对象时指定属性的值,特别是对指定图形对象句柄的操作不会影响同时存在的其他图形对象。5.4图形对象及其句柄5.4.2图形对象句柄1、图形对象句柄的获取(1)当前对象句柄的获取MATLAB提供了3个用于获取当前已有图形对象句柄的函数:
gcf获取当前图形窗口的句柄
gca获取当前坐标轴的句柄
gco获取最近被单击的图形对象的句柄5.4图形对象及其句柄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=findobj(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)*sin(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图形对象及其句柄5.4.2图形对象句柄2、图形对象句柄的删除删除图形对象使用命令delete(句柄),该命令将删除句柄所指对象和所有子对象,而且不提示确认,使用时要小心。【例】删除坐标轴。
delete(h_axes)findobj5.4图形对象及其句柄5.4.3图形对象属性的获取与设置MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值。例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-'、':'、'-.'、'--'或'none'。5.4图形对象及其句柄5.4.3图形对象属性的获取与设置1、图形对象属性的获取get函数用于获取指定对象的属性值。语法: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(句柄) %显示句柄对象所有属性和属性值
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(x)=0'); %设置文字位置set(h_text1,'fontsize',13,'color','red') %设置字体大小、颜色set(h_text2,'fontsize',13,'color','red')例:使用低层命令画图,并设置各对象的属性
5.5图形光照和材质处理为了创建光照效果,MATLAB提供了光源(Light)图形对象。用light函数创建Light对象,该函数的调用格式为:light('Color',选项1,'Style',选项2,'Position',选项3)利用lighting命令可以设置光照模式,其格式为:lighting选项其中选项有4种取值:flat、gouraud、phong、none。(P142)
5.5.1光照处理例:光照处理后的球面并观察不同光照模式下的效果。程序如下:[x,y,z]=sphere(20);subplot(1,4,1);surf(x,y,z);axisequal;shadinginterp;holdon;subplot(1,4,2);surf(x,y,z);axisequal;light('Position',[0,1,1]);shadinginterp;lightingflat;h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售人员差旅费报销标准与流程方案
- 危化品安全管理人员考试题库及答案
- 2026年安徽省继续教育公需科目试题及答案
- 防火门安装及闭门器顺位器调试方案
- 四川省绵阳市游仙区2027届数学九上期末调研试题含解析
- 2025-2026学年河北省石家庄市初中数学九年级期末上册自测实战演练题(详细参考解析)
- Oracle面试真题及详细答案(完整版)
- 2026上半年山东省教资笔试培训测试题及答案
- 高龄老年人带状疱疹疫苗接种时机指南(2026版)
- 预制构件拆模吊装操作工规程
- 国有资产报废回收合同范本
- 2023年12月英语四级真题及答案-第3套
- 《生活中的度量衡》课件
- 人教版四年级上册数学应用题100题及答案
- 低压电工作业题库低压电工实操考试题库
- 场地设计-第二章课件
- 体格检查实训课教案
- 鄂尔多斯市发展保障性租赁住房实施方案
- 教科版科学三年级上册第三单元《天气》单元作业设计
- 【课件】Unit 5 语法精讲:主语从句&it 作形式主语的主语从句 课件人教版(2019)高一选择性必修第一册
- GB/T 9746-2013航空轮胎系列
评论
0/150
提交评论