Matlab绘图与例题•人们很难直接从一大堆原始的离散数据中感受到它们的含义,数据图形恰能使人们用视觉器官直接感受到数据的许多内在本质。因此,数据可视化是人们研究科学、认识世界所不可缺少的手段。•作为一个优秀的科技应用软件,MATLAB不仅数值计算方面无与伦比,而且在数据可视化方面也有上佳表现。Matlab的数据可视化和图像处理两大功能块,几乎满足了一般实际工程、科学计算中的所有图形图像处理的需要。在数据的可视化方面,Matlab可使用户计算所得的数据根据其不同的情况转化成相应的图形。用户可以选择直角坐标、极坐标等不同的坐标系;它可以表现出平面图形、空间图形、绘制直方图、向量图、柱状图及空间网面图、空间表面图等。当初步完成图形的可视化后,Matlab还可对图形作进一步加工,初级操作,如标注、添色、变换视角;中级操作,如控制色图、取局部视图、切片图;高级操作,如动画、句柄等。总之,这一系列命令与操作足以实实在在表达各种理想视图。Matlab二维曲线绘图•1、基本绘图指令plot•MATLAB函数plot是最简单而且使用最广泛的一个线性绘图指令。利用它可以生成线段、曲线和参数方程曲线的函数图形。plot绘图命令有如下一些常用形式:•plot(y):•y是数值向量,它的作用是在坐标系中顺序的用直线段连接顶点(i,y(i)),生成一条曲线。•例1:y=[1,3,2,9,0.5];↙•plot(y)↙••plot(x,y):•x与y都是长度为n的向量,它的作用是在坐标系中顺序的用直线段连接顶点(x(i),y(i)),生成一条曲线。•例2:画出函数y=sinx2在-5x5的图形。•Matlab命令:x=-5:.1:5;↙•y=sin(x.^2);↙•plot(x,y),gridon↙•例2画出椭圆的曲线图。•对于这种情形,我们首先把它写成参数方•程,•Matlab命令:t=0:pi/50:2*pi;↙•x=5*cos(t);↙•y=2*sin(t);↙•plot(x,y),gridon1252222yx)20(sin2cos5ttytx基本绘图控制参数•图形窗口figure•figure是所有Matlab的图形输出的专用窗口。当Matlab没有打开图形窗口时,如果执行了一条绘图指令,该指令将自动创建一个图形窗口。而figure命令可自己创建窗口,使用方法如下:•figure↙;•figure(n)↙;打开第n个图形窗口•清除图形窗口clf•控制分隔线grid•grid在gridon与gridoff之间进行切换•gridon在图中使用分隔线•gridoff在图中消隐分隔线•图形的重叠绘制hold•hold在holdon与holdoff之间进行切换•holdon保留当前图形和它的轴,使此后图形叠放在当前图形上•holdoff返回Matlab的缺省状态。此后图形指令运作将抹掉当前窗中的旧图形,然后画上新图形。•图形放大指令zoom•zoom在zoomon与zoomoff之间进行切换•zoomon使系统处于可放大状态•zoomoff使系统回到非放大状态,但前面放大的结果不会改变•zoomout使系统回到非放大状态,并将图形恢复原状•zoomxon对x轴有放大作用•zoomyon对y轴有放大作用•例3:利用hold指令在同一坐标系中画出如下两条参数曲线,参数曲线方程为•x1=cost,y1=sint;x2=sint,y2=sin2t;t满足0t2•解:Matlab命令:t=0:pi/50:2*pi;↙•plot(cos(t),sin(t))↙•holdon,plot(sin(t),sin(2*t),'r.')↙线型、定点标记、颜色•二维绘图指令还提供一组控制曲线线型、标记类型、颜色的开关。该开关总跟在一元或二元对的后面,具体如下:•plot(x,’String’)•plot(x,y,’String’)•plot(x1,y1,’String1’,x2,y2,’String2’,…)•其中,string是字符串,该字符串由表3.1,3.2,3.3中的字符组成。•表3.1颜色控制字符表•色彩字符色彩RGB值•y/yellow黄色110•m/magenta洋红101•c/cyan青色011•r/red红色100•g/green绿色010•b/blue蓝色001•w/white白色111•k/black黑色000•表3.2线型控制字符表•绘图字符数据点绘图字符数据点.•.黑点d钻石形•o小圆圈^三角形(向上)•x差号三角形(向左)•+十字标号三角形(向右)•*星号p五角星•s小方块h六角星•表3.3数据点控制字符表•线型符号线型•-实线•:点线•-.点划线•--虚线图形的标注•Matlab可以在画出的图形上加各种标注及文字说明,以丰富图形的表现力。但请注意,用于标记文字的单引号应该是英文而不是中文的单引号。加注的内容可以是中文也可以是英文。•图名标注title•title(‘String’)在图形的顶端加注文字作为图名•title(‘String’,’Property’,…)定义图名所用字体、大小、标注角度•坐标轴标注xlabel,ylabel在当前图形的x轴旁边加入文字内容•xlabel(‘String’)•xlabel(‘String’,’Property’,…)定义轴名所用字体、大小、标注角度•ylabel(‘String’)在当前图形的y轴旁边加入文字内容•ylabel(‘String’,’Property’,…)定义轴名所用字体、大小、标注角度•zlabel(‘String’)在当前图形的z轴旁边加入文字内容•zlabel(‘String’,’Property’,…)定义轴名所用字体、大小、标注角度•图形标注•Matlab还提供对所绘图形的文字标注功能:指令text,在图形中指定的点上加注文字;gtext指令,先利用鼠标定位,再在此位置加注文字,该指令不支持三维图形。•text(x,y,’String’)适用于二维图形,在点(x,y)上加注文字String•text(x,y,z,’String’)适用于三维图形,在点(x,y,z)上加注文字String•gtext(‘String’)在鼠标指定位置上标注•说明:使用gtext指令后,会在当前图形上出现一个十字叉,等待用户选定位置进行标注。移动鼠标到所需位置按下鼠标左键,Matlab就在选定位置标上文字。•图例标注legend•当在一幅图中出现多种曲线时,结合在绘制时的不同线性与颜色等特点,用户可以用legend命令进行说明。其使用格式为:•legend(‘String1’,’String2’,’String3’,…)•例4:在同一坐标系中画出两个函数y=cos2x,y=x的图形,自变量范围为:-2x2,函数y=cos2x为红色实线,函数y=x为洋红色虚线。并加注标题,坐标轴。•(1)建立命令文件exam7.m•clf;•x=-2:.1:2;•y1=cos(2*x);y2=x;•plot(x,y1,'r-',x,y2,'m-.'),gridon•title('曲线y=cos(2x)与y=x及点图')•xlabel('x轴'),ylabel('y轴')•x00=-2:2;•y00=[1.5,1,0,0.56,-1.5];•holdon,plot(x00,y00,'bp')•legend('y=cos(2x)','y=x','5点图')•例5:已知科学家在某海域观察到海平面的年平均高度表如下,由表的数据绘制出二位数据点图,并画出其折线图。•年份12345678910111213•海拔5.011.016.023.036.058.029.020.010.08.03.00.00.0•年份141516171819202122232425•海拔2.011.027.047.063.060.039.028.026.022.011.021.0•解:Matlab命令:x=1:25;↙•y=[5,11,16,23,36,58,29,20,10,8,3,0,0,2,11,27,47,63,60,39,28,26,22,11,21];↙•plot(x,y,'h',x,y,'r-')↙•legend('点图','折线图')↙•ylabel('海拔')↙•xlabel('年份')↙绘制数值函数二维曲线的指令fplot•plot(x,y)绘图指令在绘图时,必须先定义自变量的一组取值点,再求出这组数据点对应的函数值,然后根据这组数据点绘制出所需的曲线。而指令fplot的特点是:它的绘图数据点是自适应产生的。在函数平坦处,它所取数据点比较稀疏;在函数变化剧烈处,它将自动取较密的数据点。因而对于导数变化比较大的函数,用fplot指令比用plot指令要更真实。•fplot的格式是:fplot(fun,[xmin,xmax],tol,n,’linespec’…)•说明:fun是函数名,可以时Matlab已有的函数,也可以是自定义的M函数;[xmin,xmax]定义x的取值区间;tol是相对误差,默认值为2e-3;n+1是绘图的最少点数;’linespec’是线型设置。•例10:分别利用指令plot与fplot绘制曲线y=sin(1/x)在区间[-1,1]的图像,并作比较。•(1)plot指令画图•Matlab命令:x=-1:.1:1;↙•y=sin(1./x);↙•plot(x,y)↙•(2)fplot指令画图•Matlab命令:fplot('sin(1./x)',[-1,1])↙绘制符号函数二维曲线的指令ezplot•ezplot(F,[xmin,xmax]),其中F是符号函数,只含有一个变量。•例11:绘制在间的图形•Matlab命令:symst↙•ezplot('2/3*exp(-t/2)*cos(3/2*t)',[0,4*pi])teyt23cos322]*4,0[piMatlab二维特殊图形•表3.4绘制二维图形的指令•函数名称功能函数名称功能•bar直方图loglog双对数曲线•barh垂直的直方图semilogxx轴对数坐标曲线•bar3三维直方图semilogyy轴对数坐标曲线•Bar3h垂直的三维直方图polar极坐标曲线•Hist统计直方图stairs阶梯图•pie饼图stem火柴棍图•pie3三维饼图pcolor伪彩图•fplot数值函数二维曲线area面积图•ezplot符号函数二维曲线errorbar误差棒棒图•gplot绘拓扑图quiver矢量场图•fill平面多边形填色ribbon代状图•例12:练习指令bar,stairs,pie,pie3,stem,area.•解:Matlab命令:x=1:5;•subplot(2,3,1),bar(x),title('直方图')↙•subplot(2,3,2),stairs(x),title('阶梯图')↙•subplot(2,3,3),stem(x,'rp'),title('火柴棍图')↙•subplot(2,3,4),pie(x),title('饼图')↙•subplot(2,3,5),pie3(x),title('三维饼图')↙•subplot(2,3,6),area(x),title('面积图')↙Matlab空间曲线绘图•三维空间曲线命令plot3•指令plot3与指令plot相同,都是Matlab内部函数。其使用格式是:•plot3(x,y,z)•plot3(x,y,z,’String’)•plot3(x1,y1,z1,’String1’,x2,y2,z2,’String2’,…)•当x,y,z为长度相同的向量时,plot3命令将绘得一条分别以向量x,y,z为x,y,z轴坐标值的空间曲线。•String用来控制曲线的颜色、线型和数据点。•例13:•画出螺旋线•与空间曲线100cossinttztytx5.11.01sincosttztytx•建立命令文件exa