MATLAB绘图资料.ppt

上传人:小飞机 文档编号:5439289 上传时间:2023-07-07 格式:PPT 页数:87 大小:1.92MB
返回 下载 相关 举报
MATLAB绘图资料.ppt_第1页
第1页 / 共87页
MATLAB绘图资料.ppt_第2页
第2页 / 共87页
MATLAB绘图资料.ppt_第3页
第3页 / 共87页
MATLAB绘图资料.ppt_第4页
第4页 / 共87页
MATLAB绘图资料.ppt_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《MATLAB绘图资料.ppt》由会员分享,可在线阅读,更多相关《MATLAB绘图资料.ppt(87页珍藏版)》请在三一办公上搜索。

1、第五章 MATLAB绘图,MATLAB二维数据曲线图的绘制 MATLAB三维图形的绘制 MATLAB图形修饰处理 MATLAB图像处理与动画制作,强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,用户不需要多考虑绘图细节,只需给出一些基本参数就能得到所需图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对图形句柄进行操作的低层绘图函数。这类操作将图形的每个图形元素(如坐标轴、曲线、曲面或文字等)看作是一个独立的对象,系统给每个图形对象分配一个句柄,以后可以通过该句柄对该图像元素进行操作,而不影响图形的其它部分。高层绘图操作简单明了、方便高效,是用户最

2、常使用的绘图方法。而低层绘图操作控制和表现图形的能力更强,为用户更加自主地绘制图形创造了条件。事实上,MATLAB的高层绘图函数都是利用低层绘图函数而建立起来的。,5.1 二维图形,二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,除直角坐标系外,还可采用对数坐标、极坐标。数据点可以用向量或矩阵形式给出,类型可以是实型或复型。1.绘制二维曲线的基本函数 plot函数plot函数的基本调用格式为:plot(x,y)其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。,例5.1 在0X2区间内,绘制曲线y=2e-0.5xsin(2x)。程序如下:,x=0:pi/100

3、:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y),注:求y时,指数函数和正弦函数之间要用点乘运算,而因2是标量,所以2与指数函数之间可以用乘法运算。这样,x和y包包含的元素个数相等,y(i)是x(i)的函数值。,例5.2 绘制曲线,程序如下:t=-pi:pi/100:pi;x=t.*cos(3*t);y=t.*sin(t).*sin(t);plot(x,y);,注:这是以参数方程形式给出的二维曲线,只要给定参数向量,再分别求出x,y向量即可绘出曲线。,以上提到plot函数的自变量x,y为长度相同的向量,这是最常见和最基本的情况。实际应用中还有一些变化。(

4、1)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同色彩的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。,x=linspace(0,2*pi,100);y=sin(x);cos(x);plot(x,y),首先产生一个行向量x,然后分别求取行向量sin(x)和cos(x),并将它们构成矩阵y的两行,最后在同一坐标中同时绘制出两条曲线。,x=linspace(0,2*pi,100);y=sin(x),cos(x);plot(x,y),?,x=linspace(0,2*pi,100);y=sin(x);cos(x);plot(x,y),?,x=linspace(0,2*p

5、i,100);y=sin(x),cos(x);plot(x,y),?,(2)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,t=linspace(0,2*pi,100);x=t;t;y=sin(t);cos(t);plot(x,y),(3)plot函数最简单的调用格式是只包含一个输入参数:plot(x)x为实向量时,以该向量元素的下标为横坐标,元素值为纵坐标绘制拆线图。x为复数向量时,分别以该向量元素的实部和虚部为横、纵坐标绘制曲线。,注:程序中的i是虚数单位,这样x是一个复数向量。i 不能被赋其他的值。,t=0:0.01:2*pi;x=exp(i

6、*t);plot(x),程序如下:,当x是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于x的列数。当x是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。,t=0:0.01:2*pi;x=exp(i*t);y=x;2*x;3*x;plot(y),2含多个输入参数的plot函数含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,xn,yn)(1)当输入参数都为向量时,x1和y1,x2和y2,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对绘制出一条曲线,这样可以在同一坐标内绘制多条曲线,x=linspace(0,2*pi,10

7、0);plot(x,sin(x),x,2*sin(x),x,3*sin(x),x=linspace(0,2*pi,100);t=0:0.01:2*pi;plot(x,sin(x),t,2*cos(t),(2)当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵列数。,x=linspace(0,2*pi,100);y1=sin(x);y2=2*sin(x);y3=3*sin(x);x=x;x;x;y=y1;y2;y3;plot(x,y,x,cos(x),3含选项的plot函数含选项的plot函数调用格式为:plot(x1,y1,选项1,x2,y2,选项2,x

8、n,yn,选项n)MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。可组合使用。例:b-.表示蓝色点划线,y:d表示黄色虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次采用下表中的前7种颜色。,例5.3 用不同线型和颜色在同一坐标内绘制曲线y=2e-0.5xsin(2x)及其包络线。程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1

9、);plot(x,y1,g:,x,y2,b-,x1,y3,rp);plot函数中包含三组绘图函数,第一组用绿色虚线绘出两根包络线,第二组用蓝色双划线绘出曲线y,第三组用红色五角星离散标出数据点。,程序中第一条命令用矩阵转置运算符将行向量转换成列向量,不用将如何?若想得到上述图形,程序如何修改?,?Error using=mtimesInner matrix dimensions must agree.,x=(0:pi/100:2*pi);y1=2*exp(-0.5*x);y1=y1;-y1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-

10、0.5*x1).*sin(2*pi*x1);plot(x,y1,g:,x,y2,b-,x1,y3,rp);,4双纵坐标函数plotyy plotyy函数是MATLAB 5.X新增的函数。它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为:plotyy(x1,y1,x2,y2)其中x1-y1对应一条曲线,x2-y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1-y1数据对,右纵坐标用于x2-y2数据对。,例5.4 用不同标度在同一坐标内绘制曲线y1=e-0.5xsin(2x)及曲线y2=1.5e-0.1xsin(x)。程序如下:x1=0:pi/100:2

11、*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.2 绘制图形的辅助操作 1.图形标注在绘制图形的同时,可以对图形加一些说明,如图形名称、坐标轴说明及图形某一部分的含义等,这些操作称为添加图形标注。有关图形标注函数的调用格式为:title(图形名称)xlabel(x轴说明)ylabel(y轴说明)text(x,y,图形说明)legend(图例1,图例2,),添加文本说明也可用gtext命令,执行该命令时,十字坐标光标自动跟随鼠标移动,单

12、击鼠标即可将文本置在十字光标处,如gtext(cos(x)除legend,同样适用三维图形,2.坐标控制在绘制图形时,MATLAB可以自动根据要绘制的曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清晰地显示出来。所以,一般情况下用户不必选择坐标轴的刻度范围。但若对坐标系不满意,可利用axis对其重新设定函数的调用格式为:axis(xmin xmax ymin ymax zmin zmax)若只给出前4个参数,MATLAB按照给定x,y轴的最大最小值选择坐标系范围,以便绘制合适的二维图形。给出全部参数,设定3个坐标轴的范围,绘三维图形。,axis函数功能丰富,常用的用法还有:axis eq

13、ual 纵、横坐标轴采用等长刻度axis square 产生正方形坐标系(缺省为矩形)axis auto 使用缺省设置axis off 取消坐标轴axis on 显示坐标轴grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。,例5.5 绘制分段函数曲线并添加图形标注。,x=linspace(0,10,100);y=;for x0=x if x0=8 y=y,1;elseif x0=6 y=y,5-x0/2;elseif x0=4 y=y,2;elseif x0

14、=0 y=y,sqrt(x0);endend,plot(x,y)axis(0 10 0 2.5)%设置坐标轴title(分段函数曲线);%加图形标题xlabel(Variable X);%加X轴说明ylabel(Variable Y);%加Y轴说明text(2,1.3,y=x1/2);%在指定位置添加图形说明text(4.5,1.9,y=2);text(7.3,1.5,y=5-x/2);text(8.5,0.9,y=1);,3.图形保持,一般情况下,绘图命令每执行一次就刷新当前图形窗口,图形窗口原有图形将不复存在。若希望在已存在的图形上再继续添加新的图形,可使用图形保持命令hold。hold

15、on/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。,例5.6 用图形保持功能在同一坐标内绘制曲线y=2e-0.5xsin(2x)及其包络线。程序如下: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%网格线控制,4.图形窗口的分割,实际应

16、用中,经常需要在一个图形窗口内绘制若干个独立的图形,这就需要对图形窗口进行分割。分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一个图形窗口中的不同图形称为子图。MATLAB提供了subplot函数,用来将当前图形窗口分割成若干个绘图区。每个区域代表一个独立的子图,也是一个独立的坐标系,可以通过subplot函数激活某一区,该区为活动区,所发出的绘图命令都是作用于活动区域。subplot函数的调用格式为:subplot(m,n,p)该函数将当前图形窗口分成mn个绘图区,区号按行优先排号,且选定第p个为当前活动区。,例5.7 在一个图形窗口中以子图形式同时绘制正

17、弦、余弦、正切、余切曲线。程序如下: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

18、,ct);title(cotangent(x);axis(0,2*pi,-40,40);,例中将图形窗口分成22个绘图区,编号从1到4,各区分别绘制一幅图形,这是最规则的情况,还可以做更灵活的分割。,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号区 stairs(x,y);title(sin(x)-1);axis(0,2*pi,-1,1);subplot(2,1,2);%选择21个区中的2号区 stem(x,y);t

19、itle(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,t);title(tangent(x);axis(0,2*pi,-40,40);subplot(4,4,8);%选择44个区中的8号区 plot(x,ct);title(cotangent

20、(x);axis(0,2*pi,-40,40);,本质上讲,这还是一种规则分割。后面将进一步说明,利用坐标轴对象操作可以对图形窗口进行任意分割。,5.1.3 绘制二维图形的其他函数,1.其他形式的线性直角坐标图在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,)前3个函数用法与plot函数相似,只是没有多输入变量形式。fill函数按向量元素的下标次序依次用直线段连接x,y对应的数据点,假如这样连接所得折线不封闭,MATLAB会自动将其

21、首尾相连,构成封闭多边形。然后将多边形内部涂满指定的颜色。,例5.8 分别以条形图、填充图、阶梯图和杆图形式绘制曲线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

22、,y,k);title(stem(x,y,k);axis(0,7,0,2);,2极坐标图polar函数用来绘制极坐标图,其调用格式为:polar(theta,rho,选项)其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。例5.9 绘制=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,)semilo

23、gy(x1,y1,选项1,x2,y2,选项2,)loglog(x1,y1,选项1,x2,y2,选项2,)选项的定义与plot函数一致,所不同的是坐标轴的选取。semilogx:x轴为常用对数刻度,y轴仍保持线性刻度。semilogy:y轴为常用对数刻度,而x轴仍保持线性刻度.loglog:x,y轴均采用常用对数刻度。,例5.10 绘制y=10 x2的对数坐标图并与直角线性坐标图进行比较。程序如下:x=0:0.1:10;y=10*x.*x;subplot(2,2,1);plot(x,y);title(plot(x,y);grid on;subplot(2,2,2);semilogx(x,y);t

24、itle(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;,除冒号表达式、linspace,MATLAB还提供了一个实用的函数logspace,它可以按对数等间距地分布来产生一个向量logspace(a,b,n),n缺省时为50。,4.对函数自适应采样的绘图函数前面的很多绘图函数,基本操作方法为:先取足够稠密的自变量向量x,然后计算出函数值向量y,最后用绘图函数绘图。在取数据点时一

25、般是等间隔采样,这对绘制高频率变化的函数不够精确。例如函数f(x)=cos(tan(x),在(0,1)范围有无限多个振荡周期,函数变化率大。为提高精度,不能等间隔采样,在变化率大的区段密集采样。fplot函数可自适应地对函数进行采样,能更好地反映函数的变化规律。fplot函数的调用格式为:fplot(fname,lims,tol,选项),filename为函数名,以字符串形式出现。它可以是由多个分量函数构成的行向量,分量函数可以是函数的直接字符串,也可以是内部函数名或函数文件名,但自变量都必须为x。lims为x,y的取值范围,以行向量形式出现,取二元向量xmin,xmax时,人为确定x轴范围,

26、取四元向量xmin,xmax,ymin,ymax时,人为确定x,y轴的范围。tol为相对允许误差,缺省时为2e-3。选项定义与plot函数相同。例:fplot(sin(x),0,2*pi,*)fplot(sin(x),cos(x),0,2*pi,-1.5,1.5,1e-3,r.),例5.11 用fplot函数绘制f(x)=cos(tan(x)的曲线,先建立函数文件myf.m:function y=myf(x)y=cos(tan(pi*x);再用fplot函数绘制myf.m函数的曲线:fplot(myf,-0.4,1.4,1e-4),5.其他形式的图形MATLAB提供的绘图函数还有很多,例如,用

27、来表示各元素占总和的百分比的饼图、复数的相量图等等。例5.12 绘制图形:(1)某次考试优秀、良好、中等、及格、不及格的人数分别为:7,17,23,19,5,试用饼图作成绩统计分析。(2)绘制复数的相量图:3+2i、4.5-i和-1.5+5i。程序如下:subplot(1,2,1);pie(7,17,23,19,5);title(饼图);legend(优秀,良好,中等,及格,不及格);subplot(1,2,2);compass(3+2i,4.5-i,-1.5+5i);title(相量图);,5.2 三维图形,5.2.1 绘制三维曲线的基本函数 plot3函数与plot函数用法十分相似,其调用

28、格式为:plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,xn,yn,zn,选项n)其中每一组x,y,z组成一组曲线的坐标参数,选项的定义与plot函数相同。均为一维向量时,构成一条三维曲线,当为同维矩阵时,以对应列绘制三维曲线,曲线条数等于矩阵列数。例5.13 绘制空间曲线,参数方程,程序如下: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(Line in 3-D Space);text(0,0,0,origin);xlabel(X),ylabel(Y),

29、zlabel(Z);grid;,5.2.2 三维曲面,绘制 所代表的三维曲面图,先要在xy平面选定一矩形区域,假定矩形区域,然后将 在x方向分成m份,将 在y方向分成n份,由各划分点分别作平等于两坐标轴的直线,将区域D分成 个小矩形,生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用相关函数绘图,1平面网格坐标矩阵的生成(1)利用矩阵运算生成。x=a:dx:b;y=(c:dy:d);X=ones(size(y)*x;,Y=y*ones(size(x);上述语句执行后,矩阵X的每一行都是向量x,行数等于向量y中元素的个数,Y中每一列都是向量y,列数等于向量x的元素个数。(2)利用meshg

30、rid函数生成。x=a:dx:b;y=c:dy:d;X,Y=meshgrid(x,y);语句执行后,所得到的网格坐标矩阵X,Y与(1)得到的相同。当x=y时,meshgrid函数可以写成meshgrid(x),例5.14 已知6x30,15y36,求不定方程2x+5y=126的整数解。程序如下:x=7:29;y=16:35;x,y=meshgrid(x,y);%在7,2916,35区域生成网格坐标z=2*x+5*y;k=find(z=126);%找出解的位置 x(k),y(k)%输出对应位置的x,y即方程的解,ans=8 13 18 23ans=22 20 18 16,输出为:,2.绘制三维曲

31、面的函数MATLAB提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用于绘制三维网格图。在不需要绘制特别精细的三维曲面时,可以通过三维网格图来表示三维曲面。surf用于绘制三维曲面图,各线条之间的补面用颜色填充。surf函数和mesh函数的调用格式为:mesh(x,y,z,c)surf(x,y,z,c)c用于指定在不同高度下的颜色范围,c省略时,c=z,亦即颜色正比于图形的高度,可得出层次分明的三维图。,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵。x,y省略时,把z矩阵的列下标当做x轴坐标,行下标当做y轴坐标,然后绘制三维曲面。x,y是向量时,要求x

32、的长度必须等于z矩阵的列数,y的长度等于z矩阵的行数,x,y向量元素的组合构成网格点的x,y坐标,z坐标取自Z矩阵,然后绘制三维曲面图。,例5.15 用三维曲面图表现函数z=sin(y)cos(x)。程序1:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);mesh(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(mesh);程序2:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);surf(x,y,z);xlabel(x-axis),ylab

33、el(y-axis),zlabel(z-axis);title(surf);程序3:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);plot3(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(plot3-1);grid;,例5.16 绘制两个直径相等的圆管的相交图形。程序如下:%两个等直径圆管的交线m=30;z=1.2*(0:m)/m;r=ones(size(z);theta=(0:m)/m*2*pi;x1=r*cos(theta);y1=r*sin(theta);%生成第一个圆管的

34、坐标矩阵z1=z*ones(1,m+1);x=(-m:2:m)/m;x2=x*ones(1,m+1);y2=r*cos(theta);%生成第二个圆管的坐标矩阵z2=r*sin(theta);surf(x1,y1,z1);%绘制竖立的圆管axis equal,axis offhold onsurf(x2,y2,z2);%绘制平放的圆管axis equal,axis offtitle(两个等直径圆管的交线);hold off,例5.17 分析由函数z=x2-2y2构成的曲面形状及与平面z=a的交线。程序如下:x,y=meshgrid(-10:0.2:10);z1=(x.2-2*y.2)+eps;

35、%第1个曲面 a=input(a=?);z2=a*ones(size(x);%第2个曲面 subplot(1,2,1);mesh(x,y,z1);hold on;mesh(x,y,z2);%分别画出两个曲面 v=-10,10,-10,10,-100,100;axis(v);grid;%第1子图的坐标设置 hold off;r0=abs(z1-z2)=1;%求两曲面z坐标差小于1的点 xx=r0.*x;yy=r0.*y;zz=r0.*z2;%求这些点上的x,y,z坐标,即交线坐标 subplot(1,2,2);plot3(xx(r0=0),yy(r0=0),zz(r0=0),*);%在第2子图画

36、出交线 axis(v);grid;%第2子图的坐标设置,a=?-25,此外,带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz,用法与mesh类似带等高线的曲面函数surfc和具有光照效果的曲面函数surfl.,例5.18 在xy平面内选择区域-8,8-8,8,绘制函数的4种三维曲面图。程序如下:x,y=meshgrid(-8:0.5:8);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);titl

37、e(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),3.标准三维曲面三维球面sphere函数的调用格式为:x,y,z=sphere(n)将产生(n+1)(n+1)绘制出圆心位于原点、半径为1的单位球体。n决定了球面的圆滑程度,默认为20.较小时,将绘制出多面体表面图。三维柱面cylinder函数的调用格式为:x,y,z=sphere(R,n)其中,R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间

38、隔点,例,cylinder(3)生成一个圆柱;cylinder(10,1)生成一个圆锥;t=0:pi/100:4*pi;R=sin(t);cylinder(R,30)生成一个正弦型柱面。另外,生成矩阵的大小与R向量的长度及n有关。其余与sphere函数相同。MATLAB还有一个peaks函数,称为多峰函数,常用于三维曲面的演示。,例5.19 绘制标准三维曲面图形。程序如下:t=0:pi/20:2*pi;x,y,z=cylinder(2+sin(t),30);subplot(1,3,1);surf(x,y,z);subplot(1,3,2);x,y,z=sphere;surf(x,y,z);su

39、bplot(1,3,3);x,y,z=peaks(30);meshz(x,y,z);,5.2.3 其他三维图形 条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、stem3、pie3和fill3。常用格式为:bar3(y);bar3(x,y)stem3(z);stem3(x,y,z);pie3(x);fill3(x,y,z,c);c指定了填充的颜色,例5.20 绘制三维图形:(1)绘制魔方阵的三维条形图。(2)以三维杆图形式绘制曲线y=2sin(x)。(3)已知x=2347,1827,2043,3025,绘制三维饼图。(4)用随机的顶点坐标值画出五个黄色

40、三角形。程序如下: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),此外,还有瀑布图和三维曲面的等高线图。绘制瀑布图用waterfall函数,用法及图形效果与meshz函数相似,只是它的网格线是在x轴方向出现,具有瀑布效果。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。,例5.

41、21 绘制多峰函数的瀑布图和等高线图。程序如下: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 三维图形的精细处理,5.3.1 视点处理 MATLAB提供了设置视点的函数view。其调用格式为:view(az,el)其中az为方位角,el为仰角,它们均以度为单位。系

42、统缺省的视点定义为方位角-37.5,仰角30。,例5.22 从不同视点绘制多峰函数曲面。程序如下:subplot(2,2,1);mesh(peaks);view(-37.5,30);%指定子图1的视点 title(azimuth=-37.5,elevation=30)subplot(2,2,2);mesh(peaks);view(0,90);%指定子图2的视点 title(azimuth=0,elevation=90)subplot(2,2,3);mesh(peaks);view(90,0);%指定子图3的视点 title(azimuth=90,elevation=0)subplot(2,2,

43、4);mesh(peaks);view(-7,-10);%指定子图4的视点 title(azimuth=-7,elevation=-10),5.3.2 色彩处理 1.颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。2.色图 色图是m3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。除plot及其派生函数外,mesh、surf等函数均使用色图着色。图形窗口色图的设置和改变,使用函数:colormap(m)其中m代表色图矩阵。3.三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上涂上颜

44、色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。,例5.23 3种图形着色方式的效果展示。程序如下:z=peaks(20);colormap(copper);subplot(1,3,1);surf(z);subplot(1,3,2);surf(z);shading flat;subplot(1,3,3);surf(z);shading interp;,5.3.3 图形的裁剪处理MATLAB定义的NaN常数可以用于表示那些不可使用的数据,利用这种特性,可以将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示

45、出来,从而达到对图形进行裁剪的目的。例如,要削掉正弦波顶部或底部大于0.5的部分,可使用下面的程序:x=0:pi/10:4*pi;y=sin(x);i=find(abs(y)0.5);x(i)=NaN;plot(x,y);,例5.24 绘制两个球面,其中一个球在另一个球里面,将外面的球裁掉一部分,使得能看见里面的球。程序如下:x,y,z=sphere(20);%生成外面的大球z1=z;z1(:,1:4)=NaN;%将大球裁掉一部分c1=ones(size(z1);surf(3*x,3*y,3*z1,c1);%生成里面的小球hold onz2=z;c2=2*ones(size(z2);c2(:,

46、1:4)=3*ones(size(c2(:,1:4);surf(1.5*x,1.5*y,1.5*z2,c2);colormap(0,1,0;0.5,0,0;1,0,0);grid onhold off,5.4 隐函数绘图MATLAB提供了一个ezplot函数绘制隐函数图形,下面介绍其用法。(1)对于函数f=f(x),ezplot函数的调用格式为:ezplot(f):在默认区间-2x2绘制f=f(x)的图形。ezplot(f,a,b):在区间axb绘制f=f(x)的图形。,(2)对于隐函数f=f(x,y),ezplot函数的调用格式为:ezplot(f):在默认区间-2x2和-2y2绘制f(x,

47、y)=0的图形。,ezplot(f,xmin,xmax,ymin,ymax):在区间xminxxmax和yminyymax绘制f(x,y)=0的图形。ezplot(f,a,b):在区间axb和ay b绘制f(x,y)=0的图形。,(3)对于参数方程x=x(t)和y=y(t),ezplot函数的调用格式为:ezplot(x,y):在默认区间0t2绘制x=x(t)和y=y(t)的图形。ezplot(x,y,tmin,tmax):在区间tmin t tmax绘制x=x(t)和y=y(t)的图形。,例5.25 隐函数绘图应用举例。程序如下:subplot(2,2,1);ezplot(x2+y2-9);axis equalsubplot(2,2,2);ezplot(x3+y3-5*x*y+1/5)subplot(2,2,3);ezplot(cos(tan(pi*x),0,1)subplot(2,2,4);ezplot(8*cos(t),4*sqrt(2)*sin(t),0,2*pi),本章小节,二维图形函数plot(x,y)plot(x1,y1,x2,y2,xn,yn)plot(x1,y1,选项,x2,y2,选项,xn,yn,选项)图形保持hold on子窗口函数subplot三维图形函数plot3(x1,y1,选项,x2,y2,选项,xn,yn,选项)mesh,surfezplot,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号