1、MATLABMATLAB 绘图绘图北京科技大学数学实验北京科技大学数学实验二维曲线绘图二维特殊图形三维曲线绘图三维曲面绘图一、MATLABMATLAB二维曲线绘图二维曲线绘图北京科技大学数学实验1、基本绘图指令 命令形式1:plot(y)功能:画一条或多条折线图。将(i,y(i)画出,x 取的是自然数例:y=2,3,5,6;8,5,7,4;4,5,6,7;plot(y)北京科技大学数学实验命令形式2:plot(x,y)功能:画一条或多条折线图。其中,x,y 可以是向量或矩阵。说明:1、当x,y都是向量时,元素个数必须相等,plot(x,y)按顺序连接各点(x(i),y(i)成一条曲线 或折线。
2、北京科技大学数学实验例:例:x=1 2 3;y=3 2 5;plot(x,y)北京科技大学数学实验说明:说明:2、当x为n维向量,y为n*m矩阵时,plot(x,y)按向量x分别与矩阵y的每一列匹配,画出m条曲线或折线。例例 x=3 4 7;y=4 5 6 5 4 7 9 5 1 4 2 5;plot(x,y)北京科技大学数学实验思考:思考:1 1、当、当x x为为n n维向量,维向量,y y为为m x n m x n 矩阵时,矩阵时,plot(x,y)plot(x,y)怎么画?怎么画?2 2、当、当x x为为n n维向量,维向量,y y为为m x w m x w 矩阵时,矩阵时,plot(x
3、,y)plot(x,y)怎么画?怎么画?3 3、当、当x x为为n n维向量,维向量,y y为为n x n n x n 矩阵时,矩阵时,plot(x,y)plot(x,y)怎么画?怎么画?4 4、当、当x x,y y为为n x n n x n 矩阵时,矩阵时,plot(x,y)plot(x,y)怎么画?怎么画?北京科技大学数学实验可以。x=a:h:b 函数函数f(x)f(x)在绘图区间在绘图区间a,ba,b上的自变量点向上的自变量点向 量数据量数据y=f(x)对应的函数值向量对应的函数值向量步长h可以任意选取,步长越小,曲线越光滑。北京科技大学数学实验问题:问题:plot(x,y)plot(x
4、,y)命令可以用来画通常的函数命令可以用来画通常的函数f(x)f(x)(其中(其中axb)axb)的图像?的图像?例例1 1 在区间-,上,绘制函数y=sin(x)图形。grid on作用是:在图形中标出网格线解:Matlab 命令:x=-pi:pi/50:pi;y=sin(x);plot(x,y),grid on北京科技大学数学实验 北京科技大学数学实验曲线y=sin x 命令形式3:plot(x1,y1,x2,y2,x3,y3)功能:在同一图形窗口画出多条曲线功能:在同一图形窗口画出多条曲线 。112233(),(),(),yf xyf xyf x北京科技大学数学实验例例2 2:在同一图形
5、窗口画出三个函数在同一图形窗口画出三个函数y=2x,y=cosx,y=sin x的图形的图形,自变量范围为自变量范围为:-3 x 3解解 MatlabMatlab命令:命令:x=-3:0.1:3;y1=2*x;y2=cos(x);y3=sin(x);plot(x,y1,x,y2,x,y3)legend(2*x,cos(x),sin(x)legend作用是:对图形进行图例标注北京科技大学数学实验例2的绘图结果北京科技大学数学实验图形的重叠绘制图形的重叠绘制holdhold holdhold 在在hold onhold on与与 hold offhold off之间进行切换之间进行切换 hold
6、on hold on 保留当前图形和它的轴保留当前图形和它的轴,使此后图形叠放在当使此后图形叠放在当前图形上前图形上 hold hold off返回返回MatlabMatlab的缺省状态。此后图形指令运的缺省状态。此后图形指令运作将抹掉当前窗中的旧图形,然后画上新图形。作将抹掉当前窗中的旧图形,然后画上新图形。北京科技大学数学实验2基本绘图控制参数控制分隔线控制分隔线gridgridgrid grid 在在grid ongrid on与与 grid offgrid off之间进行切换之间进行切换grid ongrid on 在图中使用分隔线在图中使用分隔线grid offgrid off 在图
7、中消隐分隔线在图中消隐分隔线3线型、定点标记、颜色 二维绘图指令还提供一组控制曲线线型、标记类型、颜色的二维绘图指令还提供一组控制曲线线型、标记类型、颜色的开关。该开关总跟在一元或二元对的后面,具体如下:开关。该开关总跟在一元或二元对的后面,具体如下:plot(x,y,plot(x,y,String String)plot(x1,y1,plot(x1,y1,String1 String1,x2,y2,x2,y2,String2 String2,)其中,其中,stringstring是字符串,该字符串由表是字符串,该字符串由表4-14-1、表、表4-24-2表表4-34-3(见课本(见课本P45
8、P45)中的字符组成。)中的字符组成。北京科技大学数学实验例例6 6 利用利用holdhold指令在同一坐标系中画出如下两条参数曲指令在同一坐标系中画出如下两条参数曲线,参数曲线方程为:线,参数曲线方程为:1122cos,sin;sin,sin 2;xt yt xt ytt满足02t 解 Matlab 命令为 t=0:pi/50:2*pi;plot(cos(t),sin(t),b*),grid on,hold on,plot(sin(t),sin(2*t),r.)北京科技大学数学实验北京科技大学数学实验4图形的标注图名标注图名标注titletitle(title(StringString)在图
9、形的顶端加注文字作为图名在图形的顶端加注文字作为图名坐标轴标注坐标轴标注xlabel,ylabel,zlabelxlabel(xlabel(StringString)在当前图形的在当前图形的x x轴旁边加入文字内容轴旁边加入文字内容ylabel(ylabel(StringString)在当前图形的在当前图形的y y轴旁边加入文字内容轴旁边加入文字内容zlabel(zlabel(StringString)在当前图形的在当前图形的z z轴旁边加入文字内容轴旁边加入文字内容北京科技大学数学实验图形标注图形标注gtextgtext(String)gtext(String)在鼠标指定位置上标注在鼠标指定
10、位置上标注 说明:使用gtext指令后,会在当前图形上出现一个十字叉,等待用户选定位置进行标注。移动鼠标到所需位置按下鼠标左键,Matlab就在选定位置标上文字。北京科技大学数学实验图例标注图例标注legendlegend(string1,string2,string3)legend(string1,string2,string3)当在一幅图中出现多种曲线时,结合在绘制时的不同线性与颜色等特点,用户可以用legend命令进行说明。5.一个图形窗口多个子图的绘制subplot指令它不仅适用于二维图形而且也适用于三维图形。其本质是将窗口分为几个区域,再在每个小区域中画图形。l subplot(m,
11、n,i)subplot(m,n,i)或或subplot(mni)subplot(mni)把图形窗口分为mn个子图,并在第i个子图中画图。北京科技大学数学实验 例例7 7 在同一坐标系中画出两个函数在同一坐标系中画出两个函数y=cos 2x,y=cos 2x,y=sin x sin 6x y=sin x sin 6x的图形的图形,自变量范围为自变量范围为:-2:-2 x x 2,2,函数函数 y=cos 2x y=cos 2x用红色星号用红色星号,函数函数y=sin x sin 6xy=sin x sin 6x用蓝色实线。并用蓝色实线。并加图名、坐标轴、图形、图例标注。加图名、坐标轴、图形、图例
12、标注。解:解:MatlabMatlab命令为命令为clf x=0:pi/50:pi;y1=cos(2*x);y2=sin(x).*sin(6*x);subplot(1,2,1);plot(x,y1,r*,x,y2,b-),grid on title(曲线y1=cos2x与sinxsin6x)xlabel(x轴),ylabel(y轴)gtext(y1=cos2x),gtext(y2=sinxsin6x)legend(cos2x,sinxsin6x)subplot(1,2,2);plot(x,y1,x,y2)北京科技大学数学实验北京科技大学数学实验二、MATLABMATLAB二维特殊图形二维特殊图
13、形北京科技大学数学实验特 殊的 二维 图形area填满绘图区域feather羽状图bar条形图fill填满两维多边形barh水平条形图pie饼图compass极坐标向量图stem离散杆图comet彗星轨迹图stairs阶梯图errorbar误差条图plotmatrix矩阵散布图quiver矢量图ribbon带状图pcolor伪色彩图等 高线 图形contour等高线图contourf填充的等高线图clabel等高线图标出字符北京科技大学数学实验例:绘制条形图 t=0:pi/5:2*pi;y=cos(t);bar(y)北京科技大学数学实验例:绘制面积图(1)x=1:4;y=1 2 3 4;are
14、a(x,y)北京科技大学数学实验例:绘制面积图(2)x=1:4;y=1 4 2;2 4 3;4 7 5;0 5 4;area(x,y)北京科技大学数学实验例:绘制饼图 x=30 48 36 20 12;explode=0 0 0 0 1;pie(x,explode)例:绘制火柴棍图 x=0:.1:2;y=exp(-x.2);stem(y)北京科技大学数学实验北京科技大学数学实验例:绘制阶梯图 x=0:pi/20:2*pi;y=sin(2*x);stairs(x,y)北京科技大学数学实验例:极坐标图polar(t,r)polar(t,r)使用极角t和极径r绘制极坐标图形;t=0:pi/50:2*
15、pi;polar(t,abs(sin(4*t),r)三、MATLAB三维曲线绘图plot3三维曲线绘制指令北京科技大学数学实验plot3的调用格式:l plot3(X,Y,Z)l plot3(X,Y,Z,String)l plot3(X1,Y1,Z1,String1,X2,Y2,Z2,String2,)plot3与plot的 用法相同例:绘制三维曲线的图像:北京科技大学数学实验sincosxttyttzt(020)t,t=0:pi/10:20*pi;x=t.*sin(t);y=t.*cos(t);z=t;plot3(x,y,z)解:matlab命令为:四、MATLAB空间曲面绘图Meshgri
16、d命令:Mesh命令与Surf命令:用来生成x-y平面上的小矩形顶点坐标值的矩阵,也称为格点矩阵。分别生成函数的网格曲面;与生成函数的表面曲面。MESHGRID命令介绍二元函数z=f(x,y)的图形是三维空间曲面,在Matlab中总是假设函数z=f(x,y)是定义在矩形区域D=x0,xmy0,yn上的。为了绘制三维曲面,Matlab把x0,xm分成m份,把y0,yn分成n份,这时区域D就被分成mn个小矩形块。每个小矩形块有4个顶点(顶点也叫格点)(xi,yi,f(xi,yi).连接4个顶点得到一个空间中的四边形片。所有这些四边形片就构成函数的空间网格曲面。而函数meshgrid就用来生成x-y
17、平面上的小矩形顶点坐标值的矩阵,也称为格点矩阵。函数meshgrid也适用于三元函数u=f(x,y,z)。meshgridmeshgrid的调用形式是的调用形式是:X,Y=meshgrid(x,y)X,Y=meshgrid(x)X,Y,Z=meshgrid(x,y,z)X,Y=meshgrid(x,x)。绘制二维图形时生成 小矩形的格点。X,Y,Z=meshgrid(x)绘制三维图形时生 成空间曲面的格点。等价于 X,Y,Z=meshgrid(x,x,x)等价于说明:x是区间x0,xm上分划点组成的m维向量;y是区间y0,yn上分划点组成的n维向量;输出变量X与Y都是nm矩阵;矩阵X的行向量都
18、是向量x;矩阵Y的列向量都是向量y。例:x=1,2,3;y=1,2,3,4;X,Y=meshgrid(x,y)X=1 2 3 1 2 3 1 2 3 1 2 3 Y=1 1 1 2 2 2 3 3 3 4 4 4北京科技大学数学实验MESH命令与SURF命令Mesh命令介绍利用函数meshgrid生成格点矩阵后,然后求出各格点对应的函数值,然后利用三维网格图命令mesh与三维网面图命令画出空间曲面。函数mesh用来生成函数的网格曲面,只对网格线进行着色的曲面。函数surf用来生成函数的表面曲面,即对网格曲面的网格块(四边形片)区域进行着色。mesh(X,Y,Z)mesh(X,Y,Z),(,)(
19、,)X Ymeshgrid x ymesh X Y Zmesh 指令格式:mesh(x,y,Z)mesh(Z)否则默认x=1:n,y=1:mlX,Y,Z是同维数的矩阵x,y是向量,而Z是矩阵。等价于若提供参数x,y,等价于 mesh(x,y,Z),例例:x=1,2,3 y=1,2,3,4 X,Y=meshgrid(x,y)X=1 2 3 Y=1 1 1 1 2 3 2 2 2 1 2 3 3 3 3 1 2 3 4 4 4 Z=ones(size(X);mesh(X,Y,Z)11.522.53123400.511.52(1,1,1)(2,1,1)(3,1,1)(1,2,1)(2,2,1)(3,
20、2,1)(1,3,1)(2,3,1)(3,3,1)(1,4,1)(2,4,1)(3,4,1)北京科技大学数学实验surf 绘制三维曲面图北京科技大学数学实验与三维网格图的区别:网格图:线条有颜色,空挡没有颜色曲面图:线条是黑色,空挡有颜色(把线条之间的空挡填充颜色,沿z轴按每一网格变化)解:matlab命令为:t=-2:0.1:2;x,y=meshgrid(t);z=x.*exp(-x.2-y.2);subplot(1,2,1),mesh(x,y,z),title(网格图)subplot(1,2,2),surf(x,y,z),title(曲面图)北京科技大学数学实验例:绘制函数 的图像,比较指
21、令mesh和surf。,)(22yxxez2,2yx 北京科技大学数学实验例例 用平行截面法讨论由方程构成的马鞍面形状。用平行截面法讨论由方程构成的马鞍面形状。解:解:MatlabMatlab命令为命令为t=-10:0.1:10;x,y=meshgrid(t);z1=(x.2-2*y.2)subplot(1,3,1),mesh(x,y,z1),title(马鞍面)a=input(a=(-50a50),z2=a*ones(size(x);subplot(1,3,2),mesh(x,y,z2),title(平面)r0=abs(z1-z2)=1;zz=r0.*z2;yy=r0.*y;xx=r0.*x;subplot(1,3,3),plot3(xx(r0=0),yy(r0=0),zz(r0=0),x)title(交线)北京科技大学数学实验北京科技大学数学实验马鞍面、平面及交线P79 第3,5,9题。要求:作业已实验报告的形式(模板)上交电子版