《第7章、数学图形绘制.pdf》由会员分享,可在线阅读,更多相关《第7章、数学图形绘制.pdf(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第七章 数学图形的绘制 MATLAB 的图形处理功能就是用数学图形来反映数据之间存在的客观规律,应用MATLAB 可以实现各种二维图形和三维图形的绘制、控制以及表现。本章将介绍 MATLAB的基本图形的处理功能。7.1 二维图形绘制 7.1.1 基本图形函数 1.plot 绘图函数(数值绘图)MATLAB 最基本、最重要的绘图命令就是 plot 绘图函数。它有多种基本的调用格式。plot(Y)%如果 Y 是实数,Y 的值就是它的列(column)坐标;Y 的对应下标就是它的横坐标;如果是复数,则相当于 plot(real(Y),imag(Y)。plot(X,Y,.)%绘制 X 为横坐标,Y
2、为纵坐标的数学图形。plot(X,Y,X1,Y1.)%同时绘制 Y 对 X,Y1 对 X1 的数学图形。plot(X,Y,LineSpec,.)%绘图不同线型、标识、颜色等的数学图形。【例 7.1】Y=1 3 5 7;plot(Y,ro)回车后可得如下图形:11.522.533.541234567 图 7.1 从图中可以看出,数值:1 3 5 7 的横坐标分别为:1 2 3 4【例 7.2】t=0:0.01:10;y=sin(t);Y=cos(t).*sin(2*t);plot(t,y,rd:,t,Y,bo)MATLAB 窗口将显示图 7.2 所示的函数曲线图形,其横坐标是 t,纵坐标是 y
3、和 Y。图 7.2 另外,plot 函数使用了描述颜色的参数和数据线型的参数,这将在后面会陆续介绍。【例 7.3】.sin)(的图形绘制函数xxxy x=-12:0.5:12;x=x+eps;y=sin(x)./x;plot(x,y)-15-10-5051015-0.4-0.200.20.40.60.81 图 7.3 2.subplot 图形函数(分割图形窗口)MATLAB 在绘图过程中,会自动弹出图形窗口(Figure),如果要在图形窗口中独立地显示多幅数学图形,则可以使用图形窗口分割命令 subplot。图形窗口分割命令 subplot 有多种格式,具体举例说明如下。【例 7.4】subp
4、lot(2,2,1);将整个绘图窗口分为 2 纵 2 横四个窗口,这是第 1 个(1,1)窗口,即左上角的窗口,图 7.4 所示。图 7.4 subplot(2,3,4);将整个绘图窗口分为 2 行 3 列六个窗口后,取第 4 个窗口。还可以采用另一种比较自由的窗口分割语句格式:subplot(Position,left bottom width height)例如 subplot(Position,0.27 0.38 0.50 0.37);按照中括号里给出的四个元素的向量分割图形区。四个元素依次为左边线、底边线、宽度、高度,其数值是所占整个绘图区间(归整为 0,1)的比例值,分割结果如图 7
5、.5 所示。这个方式在界面的可视化设置里很有用。图 7.5 3.fplot 和 ezplot 绘图函数(符号绘图)对于符号函数和变化剧烈的函数以及隐函数,可用 fplot 和 ezplot 进行较精确的绘图。1)fplot 函数格式 fplot(f,limits)为在指定的范围 limits=a,b,c,d内画出函数名为 f 的一元函数图。a,b 为横轴的范围,c,d 为纵轴的范围,必须指明范围,否则出错。【例 7.5】用 fplot 命令描绘符号函数的数学图形。subplot(2,2,1),fplot(-x2+1,-1 1)subplot(2,2,2),fplot(x2+2*x+1,-4 2
6、,r)subplot(2,2,3),fplot(tan(x),sin(x),cos(x),2*pi*-1 1-1 1)subplot(2,2,4),fplot(cos(1./x),0.01 0.1)图 7.6 2)ezplot 函数格式 ezplot(f)%在-2 x 2的范围里对函数 f=f(x)作图 ezplot(f,min,max)%在min x max的范围里对函数 f=f(x)作图 ezplot(f(x,y),xmin,xmax,ymin,ymax)%在min x max,min y max的范围里对函数 f(x,y)=0 作图,即隐函数画图 ezplot(x(t),y(t)%在0
7、t 2的范围里对函数 x=x(t),y=y(t)作图,即参数方程画图 ezplot(x(t),y(t),tmin,tmax)%在min t max的范围里对函数 x=x(t),y=y(t)作图,即参数方程画图【例 7.6】绘制 9 个符号函数的数学图形。subplot(3,3,1),ezplot(cos(x)%绘制 cos(x)曲线,-2x2 subplot(3,3,2),ezplot(cos(x),0,pi)%绘制 cos(x)曲线,0 x subplot(3,3,3),ezplot(1/y-log(y)+log(-1+y)+x-1)%-2x2,-2y2 subplot(3,3,4),ezp
8、lot(x2-y2-1)%-2x2,-2y2 subplot(3,3,5),ezplot(x2+y2-1,-1.25,1.25)%-1.25x,y1.25,axis equal subplot(3,3,6),ezplot(x3+y3-5*x*y+1/5,-3,3)subplot(3,3,7),ezplot(x3+2*x2-3*x+5-y2)subplot(3,3,8),ezplot(sin(t),cos(t)subplot(3,3,9),ezplot(sin(3*t)*cos(t),sin(3*t)*sin(t),0,pi)图 7.7 注 1:fplot 与 plot 的区别是 fplot 的
9、指令可以用来自动画一个已定义的函数图形,而无须产生绘图所需要的一组数据作为变数;fplot 采用自适应的步长控制画出函数的示意图,在函数的变化激烈的区间,采用较小的步长,否则采用大的步长,能使计算量与时间最小,图形尽可能精确。plot 与 fplot 绘图可对图形的线形、颜色做出控制,ezplot 则不能。注 2:ezplot(cos(x),可不带区间,缺省为-2 x ezplot(y5+2*y-x-3*x7,-10,10)xyy5+2 y-x-3 x7=0-10-8-6-4-20246810-10-8-6-4-20246810 图 7.8 4.line 绘图函数 在 MATLAB 中,绘制直
10、线,使用 line 命令。【例 7.8】line(0,4,0,8)%绘制点(0,0)到点(4,8)的直线。图 7.9 5.hold 和 clf 图形函数 在绘图过程中,如果要在已经绘制的图形上添加新的图形,可以使用 hold 命令来实现图形的保持功能。hold on 表示启动图形保持功能,hold off 表示关闭图形保持功能。在绘图过程中,为了彻底清除前面图形的影响,应该在绘图语句的前面使用 clf 命令。【例 7.9】编写以下程序,可看见一幅图中有多条曲线。x=-2*pi:0.1:2*pi;y1=cos(x);plot(x,y1,b)hold on y2=sin(x);plot(x,y2,
11、r)-8-6-4-202468-1-0.8-0.6-0.4-0.200.20.40.60.81 图 7.10 7.1.2 数学图形的修饰 1.颜色和线型 表 7.1 是 plot 绘图函数的若干参数。若要改变颜色,在坐标对后面加上相关字串即可。表 7.1 MATLAB 绘图修饰命令 字 元 颜色(或型态)字 元 颜色(或型态)y Yellow(黄色).Point(点)k Black(黑色)o Circle(圆圈)w White(白色)x Cross(叉号)b Blue(蓝色)+plus sign(加号)g Green(绿色)*Asterisk(星号)r Red(红色)-Real line(实线
12、)c Cyan(亮青色):Dot(冒号线)m Amethyst(锰紫色)-.Point-broken line(点划线)s Square(正方形)d Diamond(菱形)上三角 v 下三角 右三角 p Pentagram(五角星)h Hexagram(六角星)【例 7.10】t=0:0.05:10;plot(t,sin(t),r)012345678910-1-0.8-0.6-0.4-0.200.20.40.60.81012345678910-1-0.8-0.6-0.4-0.200.20.40.60.81 图 7.11 图 7.12 效果如图 7.11 所示。若要同时改变颜色及线型(Line
13、style),也是在坐标对后面加上相关字串即可。例如 plot(t,sin(t),ro),效果如图 7.12 所示。2.调整图轴的范围 用 axis(xmin,xmax,ymin,ymax)函数来调整图轴的范围。例如 axis(0,6,-1.5,1)效果如图 7.13 所示。0123456-1.5-1-0.500.51 图 7.13 3.图轴、标题标注与文本标注 x 轴、y 轴及图形标题标注命令格式:xlabel(Input Value);ylabel(Function Value);title(this is a function);文本标注命令格式:text(0.3,0.89,f(x)=t
14、an(x)效果如图 7.14 所示。图 7.14 【例 7.11】在同一坐标系下画出 y=sinx,y=cosx,在区间0,2pi上的曲线图,并注明曲线名称 x=0:0.1:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,r,x,y2,b*)title(2条曲线图);xlabel(x变量);ylabel(y函数);gtext(y=sinx);gtext(y=cosx);grid on 图 7.15 4.图例标注与显示格线 图例标注与显示格线的格式:legend(y=sin(x)%指定图形的式样。可以是线图(line plots),棒图(bar graphs),饼图(pie
15、 charts)等。grid on%在当前图形上加栅格线。【例7.12】fplot(sin(x),-2*pi,2*pi);legend(y=sin(x);grid on 图7.16【例7.13】x=-2*pi:0.1:2*pi;y1=cos(x);plot(x,y1,b)hold on y2=sin(x);plot(x,y2,r)legend(y1=cos(x),y2=sin(x)图 7.17 7.1.3 特殊二维图形函数 MATLAB 提供了一些比较特殊的绘图函数,如下表 7.2 所示。表 7.2 MATLAB 绘图命令 名 称 意 义 bar 棒图(条形图)comet 彗星流动图 erro
16、rbar 图形加上误差范围 fplot 较精确的函数图形 polar 极坐标图 hist 累计图(直方图)rose 极坐标累计图 stairs 阶梯图 stem 针状图 fill 实心图 feather 羽毛图 compass 罗盘图 quiver 向量场图 scatter 散点图 pie 饼图 下面仅介绍部分绘图函数的应用。1条形图、罗盘图、极坐标累计图、实心图的绘制【例 7.14】t=-10:1:10;subplot(2,2,1);bar(t,cos(t);subplot(2,2,2);compass(t,cos(t);subplot(2,2,3);rose(t,cos(t);subplo
17、t(2,2,4);fill(t,cos(t),b);效果如图 7.18 所示。图 7.18 2极坐标图形的绘制【例 7.15】:绘制 r=2cos2(t-pi/8)的图形,t 在 0 到 2pi 之间 输入如下命令:t=0:0.01:2*pi;r=2*cos(2*(t-pi/8);polar(t,r)图 7.19【例 7.16】作出极坐标系下函数 r=2(1-cost),t 在 0 到 2pi 之间的图形,同时作出相应的直角坐标系下的图形.t=0:pi/30:2*pi;r=2*(1+cos(t);subplot(1,2,1);polar(t,r);x=r.*cos(t);y=r.*sin(t)
18、;subplot(1,2,2);plot(x,y)图 7.20【例 7.17】绘出以下曲线所围成的公共部分:r1=3cost;r2=1+cost t=0:0.1:2*pi;r1=3*cos(t);r2=1+cos(t);polar(t,r1);hold on;polar(t,r2)图 7.21 3饼图的绘制 格式:pie(x)使用 X 中的数据绘制饼图,X 中的每一个元素用饼图中的一个扇区表示。在计算饼图的比例时,会自动求出给定的矢量元素之和,然后再分别算出各元素所占的比例,按照各元素所占的比例分割每块的大小,并以百分比的形式自动标注在相应的切块边,每块用不同的颜色区分,分割顺序按元素的下标从
19、 90o角的位置逆时针排列。【例 7.18】x=1 2 3 4;pie(x)%绘制饼图,见图 7.22 x=1 2 3 4;pie(x,0 0 1 0)%绘制饼图,并指定第 3 个分离出来,见图 7.23 x=1 2 3 4 5;pie3(x,0 0 1 0 1)%绘制三维饼图,并指定第 3,第 5 个分离出来,见图 7.24 图 7.22 图 7.23 图 7.24 4直方图的绘制 直方图(hist)与条形图(bar)从表面上很相似,但实质上是不同的,条形图只是简单的用条形状图形将数据点表现出来,而直方图则是一种统计运算结果,它的横轴是数据的幅度,纵轴是对应于各个幅度数据出现的次数,直方图纵
20、坐标没有负数。x=randn(5000,1);hist(x)%在缺省状态下只绘制 10 个条形,见图 7.25 x=randn(10000,1);histfit(x,15)%通过参数指定绘制 15 个条形,同时拟合出密度函数曲线,见图 7.26 图 7.25 图 7.26 5散点图的绘制 格式:scatter(x,y,s,c)其中:x 和 y 为两个矢量,用于定位数据点,s 为绘图点的大小,c 为绘图所使用的色彩,s 和 c 均可以以矢量或表达式的形式给出。如果再增加第 5 个参数filled,表示填充绘图点,否则为空心点。【例 7.19】绘制正弦函数的散点图 t=0:pi/8:2*pi;y=
21、sin(t);subplot(2,2,1);scatter(t,y)%与函数plot类似,但scatter可以绘制变尺寸,变颜色的分散图 subplot(2,2,2);scatter(t,y,(abs(y)+2).4,t.2,filled)%s用表达式(abs(y)+2).4来界定,c用表达式t.2来界定。subplot(2,2,3);scatter(t,y,30,y,filled)%s用常数30来界定 subplot(2,2,4);scatter(t,y,(t+1).2,t,filled)图 7.27 7.2 三维图形绘制 7.2.1 绘制三维曲线 绘制三维曲线的命令格式为 plot3(x1
22、,y1,z1,LineSpec,.)函数格式除了包括第三维的信息(比如 Z 方向)之外,其它与二维函数 plot 相同。功能:plot3 语句将绘制二维图形的函数 plot 的特性扩展到三维空间。用法和 plot 函数一致。【例 7.20】t=(0:0.1:3)*pi;x=sin(t);y=cos(t);z=tan(t);plot3(x,y,z,bo-);%用绘制由记号”和”构成的蓝色三维曲线 图 7.28【例 7.21】:画出三维螺旋线图:x=2cost,y=2sint,z=2t,t 在0,2pi之中.t=0:pi/10:10*pi;x=2*cos(t);y=2*sin(t);z=2*t;p
23、lot3(x,y,z,r);xlabel(x 轴);ylabel(y 轴);zlabel(z 轴);图7.29【例 7.22】设曲面 z=x2+y2,画出与平面 x=0,+-0.5,+-1,+-1.5 相交的多条曲线。clear;x=-1.5:0.5:1.5;y=-2:0.5:2;X,Y=meshgrid(x,y);Z=X.2+Y.2;plot3(X,Y,Z)title(截痕线),xlabel(x),ylabel(y),zlabel(z)图 7.30 7.2.2 绘制三维曲面 1)绘制三维网格曲面的命令格式为 mesh(x,y,z)或 meshc(.)绘制网格轮廓线图或 meshz(.)依参考
24、平面绘制网格四周门帘线图 2)绘制三维曲面图。surf(x,y,z):绘制三维曲面图,与 mesh 函数有相似功能。【例 7.23】绘制 z=sin(sqrt(x2+y2)的三维曲面图 x=-2:0.1:2;x,y=meshgrid(x,x);%为绘制三维图形而从 x 生成的 x 和 y 矩阵。%这里 x,y是 401x401 的矩阵。r=sqrt(x.2+y.2)+eps;z=sin(r);subplot(2,1,1);mesh(z);subplot(2,1,2);surf(x,y,z);%绘制三维曲面图,与 mesh 函数有相似功能。运行后图形如下:01020304050020406000
25、.51-2-1012-2-101200.51 图 7.31【例 7.24】画出旋转抛物面 z=x2+y2 的图形 x=-2:0.01:2;x,y=meshgrid(x,x);z=x.2+y.2;mesh(z)图 7.32【例 7.25】画出锥面 z=(x2+y2)(1/2)x=-2:0.01:2;x,y=meshgrid(x,x);z=(x.2+y.2).(1/2);mesh(z)图 7.33 mesh(.,C)语句中,参数 C 是代表颜色的数值。如果 x,y,和 z 是矩阵,那么 C 必须是一个相同大小的色标矩阵。meshc(.)语句绘制网格等高线图。【例 7.26】X,Y=meshgrid
26、(-3:.125:3);Z=peaks(X,Y);%为了方便绘制三维图,MATLAB 提供了一个 peaks 函数,%可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点 meshc(X,Y,Z);axis(-3 3-3 3-10 5)图 7.34 meshz(.)语句依参考平面绘制网格四周门帘线图(a curtain plot around the mesh)。【例 7.27】X,Y=meshgrid(-3:.125:3);Z=peaks(X,Y);meshz(X,Y,Z)图 7.35 可分别用以下命令区别:x=-2:0.1:2;x,y=meshgrid(x,x);z=x.2+y.
27、2;subplot(1,3,1);mesh(z)subplot(1,3,2);meshc(z)subplot(1,3,3);meshz(z)图 7.36【例 7.28】绘制三维曲面 x,y,z=peaks;subplot(2,2,1);meshz(x,y,z);%曲面加上门帘线 axis(-inf inf-inf inf-inf inf);subplot(2,2,2);waterfall(x,y,z);%在 x 方向产生水流效果 axis(-inf inf-inf inf-inf inf);subplot(2,2,3);meshc(x,y,z);%同时画出网状图与等高线 axis(-inf i
28、nf-inf inf-inf inf);subplot(2,2,4);surfc(x,y,z);%同时画出曲面图与等高线:axis(-inf inf-inf inf-inf inf);图 7.37【例 7.29】绘制三维曲面 subplot(2,2,1)contour3(peaks,50);%画出曲面在三度空间中的等高线 axis(-inf inf-inf inf-inf inf);subplot(2,2,2)contour(peaks,50);%画出曲面等高线在 XY 平面的投影 subplot(2,2,3)t=linspace(0,20*pi,501);plot3(t.*sin(t),t.
29、*cos(t),t);%画出三度空间中的曲线 subplot(2,2,4)plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);%同时画出两条三度空间中的曲线 图 7.38【例 7.30】:在-2x2,-2y3,绘出曲面 Z=X.*exp(-X.2-Y.2)的等值线;clear x=-2:0.2:2;y=-2:0.2:3;X,Y=meshgrid(x,y);Z=X.*exp(-X.2-Y.2);c,h=contour(X,Y,Z);clabel(c,h);%给等值线图标上高度值 colormap cool;figure(2);subplot(2
30、,1,1);mesh(X,Y,Z);subplot(2,1,2);surf(X,Y,Z);shading flat 图 7.39【例 7.31】绘制三维曲面 X0,Y0,Z0=sphere(50);%产生单位球面的三维坐标 X=3*X0;Y=3*Y0;Z=3*Z0;%产生半径为 3 的球面的三维坐标 clf,surf(X0,Y0,Z0);%画单位球面 shading interp%采用插补明暗处理 hold on,mesh(X,Y,Z),colormap(hot),hold off%采用 hot 色图 hidden off%产生透视效果 axis equal,axis off%不显示坐标轴 图
31、 7.40 【例 7.32】:作出马鞍面 z=x2-2y2 与平面 z=-20 相交的图形.x,y=meshgrid(-10:0.2:10,-10:0.2:10);z1=(x.2-2*y.2)+eps;z2=-20*ones(size(x);mesh(z1);hold on;mesh(z2);hold off 图 7.41【例 7.33】:绘制墨西哥曲线2222sinyxyxz x=-10:0.5:10;y=-8:0.5:8;x,y=meshgrid(x,y);z=sin(sqrt(x.2+y.2)./sqrt(x.2+y.2);mesh(z)图 7.42 古今名言 敏而好学,不耻下问孔子 业
32、精于勤,荒于嬉;行成于思,毁于随韩愈 兴于诗,立于礼,成于乐孔子 己所不欲,勿施于人孔子 读书破万卷,下笔如有神杜甫 读书有三到,谓心到,眼到,口到朱熹 立身以立学为先,立学以读书为本欧阳修 读万卷书,行万里路刘彝 黑发不知勤学早,白首方悔读书迟颜真卿 书卷多情似故人,晨昏忧乐每相亲于谦 书犹药也,善读之可以医愚刘向 莫等闲,白了少年头,空悲切岳飞 发奋识遍天下字,立志读尽人间书苏轼 鸟欲高飞先振翅,人求上进先读书李苦禅 立志宜思真品格,读书须尽苦功夫阮元 非淡泊无以明志,非宁静无以致远诸葛亮 熟读唐诗三百首,不会作诗也会吟孙洙唐诗三百首序 书到用时方恨少,事非经过不知难陆游 问渠那得清如许,为有源头活水来朱熹 旧书不厌百回读,熟读精思子自知苏轼 书痴者文必工,艺痴者技必良蒲松龄 声明 访问者可将本资料提供的内容用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本文档及相关权利人的合法权利。谢谢合作!