1、Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,东北电力大学,理学院 付景超,Northeast,Dianli,College,Matlab,语言程序设计,-,MATLAB,绘图,第四讲,Matlab,绘图,二维图形,1,数据分析图,2,复杂有趣的图形,3,4,三维图形,3,3,第四讲,Matlab,绘图,matlab,语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了,可视化,,这是其它语言
2、所不能比拟的。,不仅能绘制几乎所有的标准图形,而且其表现形式也是丰富多样的。,matlab,语言不仅具有高层绘图能力,而且还具有底层绘图能力,句柄绘图方法。,在面向对象的图形设计基础上,使得用户可以用来开发各专业的专用图形。,matlab,语言的绘图功能,一、二维图形,1.1 plot,最基本的二维图形指令,plot,的功能:,plot,命令自动打开一个图形窗口,Figure,用直线连接相邻两数据点来绘制图形,根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把,x,y,轴用对数坐标表示,一、二维图形,如果已经存在一个图形窗口,,plot,命令则清除当前
3、图形,绘制新图形,可单窗口单曲线绘图;可单窗口多曲线绘图;可单窗口多曲线分图绘图;可多窗口绘图,可任意设定曲线颜色和线型,可给图形加坐标网线和图形加注功能,一、二维图形,plot,的调用格式:,plot(x),缺省自变量绘图格式,,x,为向量,以,x,元素值为纵坐标,以相应元素下标为横坐标绘图,plot(x,y),基本格式,以,y(x),的函数关系作出直角坐标图,如果,y,为,nm,的矩阵,则以,x,为自变量,作出,m,条曲线,plot(x1,y1,x2,y2),多条曲线绘图格式,一、二维图形,plot(x,y,s),开关格式,开关量字符串,s,设定曲线颜色和绘图方式,使用颜色字符串的前,13
4、个字母,如,yellowyel,表示等,。,或,plot(x1,y1,s1,x2,y2,s2,,,),一、二维图形,点 型,.,点,正三角,*,星号,v,倒,三角,O,O,s,正方形,+,+,d,菱形,X,乘号,p,五角星,右三角,none,无点,下表中列出了,s,可以取的值。,一、二维图形,线 型,颜 色,-,实线,m,品红色,-,虚线,b,蓝色,-.,点划线,c,灰色,:,点线,w,白色,none,无线,r,红色,颜 色,k,黑色,g,绿色,y,黄色,一、二维图形,1,)单窗口单曲线绘图,例,1,:,x=0,0.48,0.84,1,0.91,0.6,0.14,x1,x2,x3,x4,x5
5、x6,x7,plot(x),exno41,一、二维图形,2,)单窗口多曲线绘图,例,2,:,t=0:pi/100:2*pi;,y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);,plot(t,y,t,y1,t,y2),y,y1,y2,exno42,一、二维图形,例,3,:,y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);y3=cos(t);y4=cos(t+0.25);y5=cos(t+0.5);plot(t,y,y1,y2,y3,y4,y5),exno43,一、二维图形,y3=cos(t);y4=cos(t+0.25);y5=cos(t
6、0.5);,plot(t,y3);hold on;plot(t,y4);plot(t,y5);,exno44,一、二维图形,3,)单窗口多曲线分图绘图,subplot,子图分割命令,调用格式:,subplot(m,n,p),按从左至右,,从上至下排列,行,列,绘图序号,一、二维图形,subplot(1,3,1);plot(t,y)subplot(1,3,2);plot(t,y1)subplot(1,3,3);plot(t,y2),exno45,一、二维图形,subplot(3,1,1);plot(t,y)subplot(3,1,2);plot(t,y3)subplot(3,1,3);plot
7、t,y2),exno46,一、二维图形,4,)图形加注功能,将标题、坐标轴标记、网格线及文字注释加注到图形上,这些函数为:,title,给图形加标题,xlable,给,x,轴加标注,ylable,给,y,轴加标注,text,在,图形指定位置加标注,gtext,将标注加到图形任意位置,grid on(off),打开、,关闭坐标网格线,legend,添加,图例。,该命令把图例放置,在图形空白处,用户还可以通过鼠标移动,图例,将其放到希望的位置。,axis,控制,坐标轴的刻度,一、二维图形,例:,t=0:0.1:10,y1=sin(t);y2=cos(t);plot(t,y1,r,t,y2,b-)
8、x=1.7*pi;1.6*pi;,y=-0.3;0.8;,s=,sin(t);cos(t,);,text(x,y,s);,title(,正弦和余弦曲线,);,legend(,正弦,余弦,),xlabel,(,时间,t),ylabel,(,正弦、余弦,),grid,axis square,exno47,一、二维图形,一、二维图形,图形的注释功能主要包括以下几个部分的内容:,1,、在图形的任意地方添加文本、直线、箭头以及其他方式;,2,、将注释定位于数据空间;,3,、增加文本注释和颜色;,4,、增加坐标轴标签和图形标题;,5,、对图形体的属性进行编辑。,一、二维图形,对图形的注释可以使用以下,
9、4,种方式:,1,、“图形注释”工具栏的显示,选择,view,菜单中的,plot edit toolbar,命令。,2,、图形调色板中的“注释”工具,基本的注释工具也可从图形调色板中调出,可以选择,view,菜单下的,figure palette,命令调出图形调色板。,3,、从,insert,菜单增添注释,用户也可以从,insert,菜单增添注释,打开,insert,菜单,从,insert,下拉菜单中选择用户需要的注释种类即可。,4,、使用命令语句增添注释,一、二维图形,axis,的用法还有:,axis(xmin xmax ymin ymax),用行向量中,给出的值设定坐标轴的最大和最小值。,
10、如,axis(-2 2 0 5),axis(square),横轴及纵轴比例是,1:1,axis(equal),将,两坐标轴设为相等,axis(,xy,),预设值使用卡氏座标即是将图原点设在左下角横轴由左往右增纵轴由下往上递增,axis(,ij,),使用矩阵格式即是将图原点设在左上角横轴不变纵轴由上往下递增,axis normal,以预设值画纵轴及横轴,axis on(off),显示,和关闭坐标轴的标记、标志,axis auto,将,坐标轴设置返回自动缺省值,一、二维图形,以下是应用,axis,的范例:,x=linspace(0,2*pi,30);y=,sin(x,);z=,cos(x,);,p
11、lot(x,y,x,z,),axis off,axis on,axis(square,equal,),axis(xy,normal,),exno421,一、二维图形,调用,plot,函数绘图的三种方式:,x=linspace(-2,2,21);%,数据离散采样,subplot(131);,plot(x,sin(2*,x),k,-%,该程序介绍,polar,函数的用法,x=0:0,01:10;,y1=,sin(x,);,y2=cos(x-2.5);,polar(y1,y2,-r+),exno419,一、二维图形,1.5,图形控制,home,移动光标到命令窗口的左上角。,hold on,保持当前图
12、形。允许在当前图形状态下,使用同样的缩放比例加入另一个图形。,hold off,释放图形窗口,这样下一个图形将称为当前图形。这是缺省状态。,hold,在,hold on,和,hold off,之间进行切换。,一、二维图形,阅读如下程序:,x=linspace(0,2*pi,60);%,将区间,0,2pi,等分为,60-1=59,份,y=,sin(x,);,z=,cos(x,);,plot(x,y,b,);%,绘制正弦曲线,hold on;%,设置图形保持状态,plot(x,z,g,);%,保持正弦曲线同时绘制余弦曲线,axis(0 2*pi-1 1);%,给出坐标轴范围,legend(cos,
13、sin,);%,给出图的说明,hold off%,关闭图形保持,exno410,二、数据分析图(特殊类型函数),bar,绘制直方图,例子:,x1=2:6;bar(x1,rand(5,2);,%,返回,5*2,的随机矩阵,,rand,函数产生随机数的数组,它的元素均匀分布在间隔,(0,1),上。,polar,绘制极坐标图,例子:,theta=linspace(0,2*pi,101);rho=,sin(theta+cos(theta);polar(theta,rho,),hist,绘制统计,直方图,例子:,y=rand(100,1);n,x=,hist(y);hist(y,),stairs,绘制阶
14、梯图,例子:,x=rand(1,6);y=rand(1,6);stairs(x,y),stem,绘制火柴杆图,例子:,y=rand(1,6);stem(1:6,y),或者,stem_test.m,rose,绘制统计扇形图,例子:,t=randn(1,60);rose(t),或者,rose_test.m,comet,绘制彗星曲线,compass,绘制罗盘图,例子:,u=randn(2,3);v=randn(2,3);compass(u,v),contour,绘制等高线图,例子:,x,y,z,=peaks(80);contour(z),ezcontourf,绘制彩色等高线,以下绘图命令还可以使用,
15、Help,命令中的例子验证!,二、数据分析图,errorbar,绘制误差棒图,例子:,x=0:pi/10:pi;y=,sin(x);E,=,std(y,)*,ones(size(x,);,errorbar(x,y,E,)%,绘制对称的误差带,该误差带在长度上是两个标准误差单位。,compass,复数向量图,(,罗盘图,),例子:见程序,compass_test.m,feather,复数向量投影图,(,羽毛图,),例子:,feather_test.m,quiver,向量场图,例子:,x,y,=meshgrid(-2:0.2:2,-1:0.15:1);z=x.*exp(-x.2-y.2);,px,
16、py=gradient(z,.2,.15);quiver(x,y,px,py),area,区域图,例子:,pie,饼图,例子:,x1=rand(1,5);pie(x1)figure;x1=rand(1,5);pie(x1),%,画,2,个饼图对比,例子,2,:,见,pie_test,convhull,凸壳图,例子可见,HELP,scatter,离散点图 例子:,load seamount scatter(x,y,5,z),M,atlab,自带函数,humps,可以使用绘图命令,plot,绘出,二、数据分析图,例,绘制阶梯曲线,x=0:pi/20:2*,pi;y,=,sin(x);stairs(
17、x,y,),exno411,二、数据分析图,例:绘制直方图,t=0:0.2:2*pi;y=,cos(t,);,bar(y,),exno412,二、数据分析图,x=1 2 3 4 5 6 7;y=0 0 0 1 0 0 0;,pie(x,y,),exno413,函数绘图,MATLAB,中除了以数据向量或向量对为依据绘图外还可以直接对某些数学函数进行绘图,称之为,函数绘图,。,函数绘图可以通过直接描述函数的构造,绘制函数在一定定义域内的图形。,函数绘图指令,函数,注释,flplot(fun,limits,),在,limits,范围内绘制函数句柄,fun,的函数图形,ezplot(fun,xmin,
18、xmax,ymin,ymax,),在指定范围内绘制函数句柄,fun,的函数图形,ezpolar(fun,a,b,),在,a,b,弧度范围内绘制函数句柄,fun,的极坐标函数图形,ezcontour(fun,),绘制函数句柄,fun,的等高线图形,ezcontourf(fun,),绘制函数句柄,fun,的填充等高线图形,函数绘图,例子 构造函数并用不同的方法进行函数绘图。,(1),绘制直角坐标函数绘图。,s,ubplot(221);,e,zplot(sin(x)+cos(3*x),-2*pi 2*pi-2 2);,(2),绘制极坐标函数绘图。,s,ubplot(222);,e,zpolar(3+
19、3*sin(t)+5*cos(t),0 2*pi);,(3),绘制等高线函数绘图。,s,ubplot(223);,e,zcontour(peaks,);,(4),绘制填充等高线函数绘图。,s,ubplot(224);,e,zcontourf(peaks,);,函数绘图,(5),调用,e,zcontour,绘制等高线,例子:参见,M,文件,ezcontour_test,(6),绘制隐函数,的曲线。,从所给函数形式看,无法用解析的方法写出该函数,所以不能使用,plot(),函数绘制该函数曲线。对于隐函数可以使用命令,ezplot,(),绘制函数。,ezplot(x2*sin(x+y2)+y2*ex
20、p(x+y)+5*cos(x2+y),上面的语句将自动选择,X,轴的范围,及函数定义域,如果想改变函数定义域,可用下面命令:,ezplot(x2*sin(x+y2)+y2*exp(x+y)+5*cos(x2+y),-10,10),(7),绘制标准正态分布概率密度函数 的函数曲线。,clear,syms,x,e,zplot(exp(-(x2/2)/sqrt(2*pi),-4,4),grid,(8),绘制表达式 的图形。,syms,x y,y=3*exp(-x)*(,sin(x)-cos(x,),ezplot(y,),二、数据分析图,plot,二维图形基本函数,fplot,f(x),函数曲线绘制,
21、ezplot,简易绘图函数,也可绘制隐函数,fill,填充二维多边图形,polar,极坐标图,bar,条形图,loglog,双对数坐标图,semilogx,X,轴为对数的坐标图,semilogy,Y,轴为对数的坐标图,stairs,阶梯形图,axis,设置坐标轴,clf,清除图形窗口内容,close,关闭图形窗口,figure,创建图形窗口,grid,放置坐标网格线,gtext,用鼠标放置文本,hold,保持当前图形窗口内容,subplot,创建子图,text,放置文本,title,放置图形标题,xlabel,放置,X,轴坐标标记,ylabel,放置,Y,轴坐标标记,二维绘图函数小结,三、三维
22、图形,plot3,基本的三维图形指令,调用格式:,plot3(x,y,z)x,y,z,是,长度相同的向量,plot3(X,Y,Z)X,Y,Z,是维数相同的矩阵,plot3(x,y,z,s),带开关量,plot3(x1,y1,z1,s1,x2,y2,z2,s2,),一、,plot3,函数,三、三维图形,二维图形的所有基本特性对三维图形全都适用。,axis(xmin xmax ymin ymax zmin zmax),定义三维坐标轴大小,grid on(off),绘制三维网格,text(x,y,z,string),三维图形标注,子图和多窗口也可以用到三维图形中,三、三维图形,例:,绘制三维螺旋曲线
23、其程序为:,t=0:pi/50:10*pi;,y1=sin(t),y2=,cos(t,);,plot3(y1,y2,t);,title(helix),text(0,0,0,origin);,xlabel(sin(t),ylabel(cos(t),zlabel(t,);,grid;,exno414,三、三维图形,三维饼图,pie3(4 3 6 8 9),exno415,二、,mesh,函数,mesh,函数用于绘制,三维网格图,。在不需要绘制特别精细的三维曲面结构图时,可以通过绘制三维网格图来表示三维曲面。三维曲面的网格图最突出的,优点,是:它较好地解决了,实验数据在三维空间的可视化问题,。,函
24、数格式:,mesh(x,y,z,c),其中,x,,,y,控制,X,和,Y,轴坐标,矩阵,z,是由,(x,,,y),求得,Z,轴坐标,,(x,y,z),组成了三维空间的网格点;,c,用于控制网格点颜色。,例:下列程序绘制三维网格曲面图,x=0:0.15:2*pi;,y=0:0.15:2*pi;,z=sin(y)*,cos(x,);,矩阵相乘,mesh(x,y,z);,三、三维图形,exno416,三、三维图形,三、三维图形,三、,surf,函数,surf,用于绘制三维曲面图,各线条之间的补面用颜色填充。,surf,函数和,mesh,函数的调用格式一致。,函数格式,:,surf(x,y,z),其中
25、x,,,y,控制,X,和,Y,轴坐标,矩阵,z,是由,x,,,y,求得的曲面上,Z,轴坐标。,例:,下列程序绘制三维曲面图形,x=0:0.15:2*pi;,y=0:0.15:2*pi;,z=sin(y)*,cos(x,);%,矩阵相乘,surf(x,y,z);,xlabel(x-axis),ylabel(y-axis),zlabel(z-label,);,title(3-D surf);,exno417,三、三维图形,三、三维图形,四、等高线图,等高线图可通过函数,contour3,绘制。,例:,多峰函数,peaks,的等高线图,x,y,z=peaks(30);,contour3(x,y,z
26、16);,xlabel(x-axis),ylabel(y-axis),zlabel(z-axis,);,title(contour3 of peaks),exno418,三、三维图形,三、三维图形,MATLAB,是以,meshgrid,配合与,mesh,或,surf,指令来绘图。先要以,meshgrid,产生在,x-y,平面的二维的网格数据,再以一组,z,轴的数据对应到这个二维的网格,即可画出三维的曲面。以下的例子可说明上 述的绘图过程。,x=-7.5:0.5:7.5;y=x;%,先产生,x,及,y,二个阵列,X,Y=,meshgrid(x,y,);%,再以,meshgrid,形成二维的网格
27、数据,R=sqrt(X.2+Y.2)+eps;%,加上,eps,可避免当,R,在分母时趋近零时会无法定义,Z=,sin(R,)./R;%,产生,z,轴的数据,mesh(X,Y,Z,)%,将,z,轴的变化值以网格方式画出,surf(X,Y,Z,)%,将,z,轴的变化值以曲面方式画出,mesh(peaks,)%,直接将以定义的,peaks,函数以网格方式画出,title(Mesh,plot of peaks),三、三维图形,contour,是将等值线图以二维图表示,其语法有,几个,方式。,一是,contour(Z,),contour(Z,n,),,其中,Z,是一个二维矩阵,,而,n,为等值线的数目
28、如果不给即以自动方式 设定)。,另一种语法则是将,z,轴的值对应到指定的,x,y,轴的值,,语法为,contour(X,Y,Z),contour(X,Y,Z,n,),,,其中,X,Y,Z,代表,x,y,z,轴的数据。,contour3,则是将等值线以三维图表示,,其语法与,contour,类似,只是将对应的关键字,contour,改成,contour3,,其余部份相同。,以下的例子可以比较,contour,contour3,图示的不同:,X,Y,Z=peaks;%,x,y,及,z,轴的数据由,peaks,函数定义,subplot(2,2,1),contour(Z,20)%,画出,peaks,
29、的,Z,轴二维等值线图,,20,为等值线的数目,subplot(2,2,2),contour(X,Y,Z,20)%,画出,peaks,的二维等值线图,注意,x,y,轴与上图不同,subplot(2,2,3),contour3(Z,20)%,画出,peaks,的,Z,轴二维等值线图,subplot(2,2,4),contour3(X,Y,Z,20)%,画出,peaks,的三维等值线图,注意,x,y,轴与上图不同,三、三维图形,练习,(海底测量):下表给出海平面上点(,x,y,)处水深,z,,这是在低潮时测得的。如果船的吃水深度为,5,米,试问在矩形域,75x200,-50y,clear;clos
30、e,;,x=129 140 108 88 185 195 105 157 107 77 145 162,162,117,;,y=7 141 28 147 22 137 85-6-81 3 45-66 84-38,;,plot(x,y,o,);,%,考虑将,z,的数据转化为相对于海面的高度,z=4 8 6 8 6 8 8 9 9 8 8 9 4 9;,h=-z;%,数据转化为相对于海面的高度,下页还有,三、三维图形,由此可见。在点(,129,,,7.5,)和点(,162,,,84,)附近各有一块暗礁。进一步求水深不到,5,米的两个危险区域;,contour(X,Y,H,-5,5,k)%k,表示等
31、高线的颜色为黑色。,xi=75:5:200;yi=-50:10:150;,X,Y=,meshgrid(xi,yi,);,H=,griddata(x,y,h,X,Y,cubic,),mesh(X,Y,H,);,view(-60,30);%,改变视点,三、三维图形,1,.,应用函数,line,绘制三维曲线,调用格式:,line(x,y,z,),例子见,M,文件:,line_3D,2,.,应用函数,mesh,绘制三维网格图,调用格式,mesh(z);mesh(x,y,z,);,mesh(x,y,z,c,);c,是网格线段颜色参数,例子见,M,文件,mesh.m,3,.,应用函数,ezmesh,可根据
32、数学表达式绘制三维网格图,调用格式:,ezmesh(zfun);ezmesh(zfun,domain,),等 例子见文件,mesh_ezmesh.m,4.meshc,绘制带有等高线的网状图,例子见文件:,meshc.m,5.ezmeshc,可根据数学表达式绘制带有等高线的网状图,例子:,ezmeshc.m,6.meshz,绘制带有“围裙”的网状图,例子:,meshz.m,7.ezsurf,绘制基于数学表达式的三维曲面,例子:,ezsurf_test.m,三、三维图形,8.surfc,绘制带有等高线的曲面 例子:,surfc_test.m,9.surfl,绘制带有光照效果的曲面图 例子:,sur
33、fl_test.m,10.surfnorm,用来计算或者显示三维表面法向。例子:,surfnorm_test.m,11.contour3,绘制三维等高线。例子:,contour3_test.m,12.waterfall,绘制在,X,轴或,Y,轴方向具有流水效果曲面。例子:,waterfall_test,13.pcolor,可绘制颜色表示高度值的图形。例子,;,pcolor_test.m,14.cylinder,可以生成关于,Z,轴的对称的螺旋体坐标。,cylinder_test.m,15.sphere,用于生成单位球体的坐标。,sphere_test.m,16.ellipsoid,用来生成椭球
34、体表面坐标。,ellipsoid_test.m,17.slice,用来绘制三维切片图。,slice_test.m,四、,复杂有趣图形,函数或映射产生的复杂有趣图形,1)Logistic,映射,又称罗杰斯蒂映射,数学表达式为:,这里,a,是参数,随着,a,的取值不同上面的迭代公式可以表现出不同的行为。其分岔图和,Lynapunov,指数图相应的实现程序为:,logistic_L.m,2)Henon,映射,又称为平方映射,数学表达式为:,这里取参数 实现程序为:,Henon2_map,四、,复杂有趣图形,3),帐篷映射,其数学定义为:,这里 存在混沌现象。程序见:,tent_maping.m,4)
35、肯特映射,肯特映射中,参数范围,实现程序见,Kent_mapping.m,四、,复杂有趣图形,5)Lozi,映射,当,p=1.75,q=0.33,时迭代图形的程序见:,Lozi_maping.m,6)Ushiki,映射,取 且 时,绘制相应的映射图形程序如下:,Ushiki_maping.m,四、,复杂有趣图形,7),三个迭代形成的映射关系,8,)双混沌图形,其中 和 表示绘图的坐标点。可调用程序:,doublechaos.m,三个映射的实现程序分别为:,f,un_map1.m,fun_map2.m,fun_map3.m,四、,复杂有趣图形,9),标准映射,其中参数为 ,通过绘制 可以得到标
36、准映射的相图,程序如:,standardmap.m,10,)蔡氏混沌电路,蔡氏混沌电路是混沌研究中一个典型的电路模型,最早由美籍华人蔡少棠教授提出。该方程的标准化形式为:,其中 在计算中参数取值为:,定义,chua,电路的函数为:,chua.m,调用函数,ode45,求解,chua,电路方程,程序文件名为:,chua_solve,动态演示见:,standard_mapping,四、,复杂有趣图形,11)Julia,集的绘制(分形初步),Julia,集对应下述映射关系:,其中,z,是复平面上的点,,c,是一个复常数。,Julia,图案的绘制程序如,Julia.m,其调用格式为,上面的,Julia
37、函数调用格式为:,Julia(x,y,L,);,Julia(x,y,L,c,);,调用如下程序可以得到下面的图形:,subplot(221);Julia(0,0,2);axis,square;xlabel(a,);%,绘制,Julia,集的图案,subplot(222);Julia(0,0.5,0.5);axis,square;xlabel(b,);%,绘制,Julia,集的图案,subplot(223);Julia(-0.1,0.5,0.1);axis,square;xlabel(c,);%,绘制,Julia,集的图案,subplot(224);Julia(-0.1,0.5,0.05);axis,square;xlabel(d,);%,绘制,Julia,集的图案,






