4-MATLAB计算的图形绘制.ppt
第四讲 MATLAB的图形绘制作作为为一一个个功功能能强强大大的的工工具具软软件件,Matlab具具有有很很强强的的图图形形处处理理功功能能,提提供供了了大大量量的的二二维维、三三维维图图形形函函数数。由由于于系系统统采采用用面面向向对对象象的的技技术术和和丰丰富富的矩阵运算,所以在图形处理方面既方便又高效的矩阵运算,所以在图形处理方面既方便又高效。一、二维曲线的绘制(一)基本图形函数(二)图形的修饰(三)图形的比较显示常用格式常用格式:plot(x)%绘制以绘制以x为纵坐标的二维曲线为纵坐标的二维曲线plot(x,y)%绘制以绘制以x为横坐标为横坐标,y为纵坐标的二维曲线为纵坐标的二维曲线plot(x1,y1,x2,y2,)%绘绘制制多多条条曲曲线线,不不同同的的矩矩阵阵对对之之间间,其,其维维数可以不同数可以不同 说明:说明:x和和y可以是向量或矩阵。可以是向量或矩阵。一、二维曲线的绘制一、二维曲线的绘制(一)(一)基本图形函数基本图形函数 【例例1 1】:x1=1 4 3;plot(x1)(一)(一)基本图形函数基本图形函数注:当注:当x是实向量时,是实向量时,以该向量的序号为以该向量的序号为横坐标,元素值为横坐标,元素值为纵坐标画出一条连纵坐标画出一条连续曲线,这实际上续曲线,这实际上是绘制折线图。是绘制折线图。一、二维曲线的绘制一、二维曲线的绘制x2=3 5 7 6;12 24 15 14;3 6 9 7;plot(x2)(一)(一)基本图形函数基本图形函数注:当注:当x是实矩阵时,是实矩阵时,则以其序号为横坐则以其序号为横坐标,按列绘制每列标,按列绘制每列元素值相对于其序元素值相对于其序号的曲线。号的曲线。一、二维曲线的绘制一、二维曲线的绘制x3=1 2 3;y3=1 2 3;4 3 6;plot(x3,y3)(一)(一)基本图形函数基本图形函数注:注:当当x是向量,是向量,y是有一维与是有一维与x同维的同维的矩阵时,则绘制出矩阵时,则绘制出多根不同颜色的曲多根不同颜色的曲线。曲线条数等于线。曲线条数等于y矩阵的另一维数,矩阵的另一维数,x被作为这些曲线共被作为这些曲线共同的横坐标。同的横坐标。一、二维曲线的绘制一、二维曲线的绘制x3=1 2 3;y3=1 2 3;4 3 6;7 8 9;plot(x3,y3)(一)(一)基本图形函数基本图形函数一、二维曲线的绘制一、二维曲线的绘制x4=3 5 7 6;12 24 15 14;3 6 9 7;y4=1 3 4 2;6 8 7 5;5 4 3 9;plot(x4,y4)(一)(一)基本图形函数基本图形函数注:注:如果如果x和和y都是都是矩阵,则大小必须矩阵,则大小必须相同,矩阵相同,矩阵x的每列的每列和和y的每列画一条曲的每列画一条曲线。线。一、二维曲线的绘制一、二维曲线的绘制x=0:pi/10:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,x,y2)(一)(一)基本图形函数基本图形函数一、二维曲线的绘制一、二维曲线的绘制plot(x,y1,r+-,x,y2,k*:)%多多种种颜颜色色或或线线型来区分不同的数据组型来区分不同的数据组(一)(一)基本图形函数基本图形函数一、二维曲线的绘制一、二维曲线的绘制1图形标注图形标注有关图形标注函数的调用格式为:有关图形标注函数的调用格式为:title(s)%书写图名书写图名xlabel(s)%横坐标轴名横坐标轴名 ylabel(s)%纵坐标轴名纵坐标轴名 text(xt,yt,s)%在图形的在图形的(xt,yt)坐标处书写文字注释坐标处书写文字注释 legend(s,pos)%在指定位置建立图例在指定位置建立图例(二)(二)图形修饰图形修饰一、二维曲线的绘制一、二维曲线的绘制函函数数中中的的说说明明文文字字,除除使使用用标标准准的的ASCII字字符符外外,还还可可使使用用LaTeX格格式式的的控控制制字字符符,这这样样就就可可以以在在图图形形上上添添加加希希腊腊字字母母、数数学学符符号号及及公公式式等等内内容容。例例如如,text(0.3,0.5,sin(omegat+beta)将将得得到到标注效果标注效果sin(t+)。(二)(二)图形修饰图形修饰一、二维曲线的绘制一、二维曲线的绘制2坐标控制坐标控制axis函数的调用格式为:函数的调用格式为:axis(xmin xmax ymin ymax zmin zmax)axis函数功能丰富,常用的格式还有:函数功能丰富,常用的格式还有:axis equal:纵、横坐标轴采用等长刻度。:纵、横坐标轴采用等长刻度。axis square:产生正方形坐标系:产生正方形坐标系(缺省为矩形缺省为矩形)。axis auto:使用缺省设置。:使用缺省设置。axis off:取消坐标轴。:取消坐标轴。axis on:显示坐标轴。:显示坐标轴。(二)(二)图形修饰图形修饰一、二维曲线的绘制一、二维曲线的绘制3.分格分格线线使用使用grid命令命令显显示分格示分格线线。格式:格式:grid on%显显示分格示分格线线 grid off%不不显显示分格示分格线线 grid%在以上两个命令在以上两个命令间间切切换换说说明明:不不显显示示分分格格线线是是MATLAB的的默默认认设设置置。分分格格线线的的疏疏密密取取决决于于坐坐标标刻刻度度,如如果果要要改改变变分分格格线线的的疏密,必疏密,必须须先定先定义义坐坐标标刻度。刻度。(二)(二)图形修饰图形修饰一、二维曲线的绘制一、二维曲线的绘制【例2】:x=0:pi/10:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,x,y2)grid on(二)(二)图形修饰图形修饰一、二维曲线的绘制一、二维曲线的绘制 xlabel(Independent Variable X)ylabel(Dependent Variable Y)title(Sine and Cosine Curve)gtext(sin(x)(二)(二)图形修饰图形修饰gtext(s)-用鼠标把用鼠标把字符串放到图形上字符串放到图形上一、二维曲线的绘制一、二维曲线的绘制text(1.5,0.3,cos(x)axis(0 2*pi-0.8 0.8)(二)(二)图形修饰图形修饰一、二维曲线的绘制一、二维曲线的绘制legend(sin(x),cos(x),4)(二)(二)图形修饰图形修饰一、二维曲线的绘制一、二维曲线的绘制1同一窗口多次叠绘同一窗口多次叠绘格式:格式:hold on%使当前坐标系和图形保留使当前坐标系和图形保留 hold off%使当前坐标系和图形不保留使当前坐标系和图形不保留 hold%在以上两个命令中切换在以上两个命令中切换说明:说明:在设置了在设置了“hold on”后,如果画多个图形对象,后,如果画多个图形对象,则在生成新的图形时保留当前坐标系中已存在的图形对则在生成新的图形时保留当前坐标系中已存在的图形对象,象,MATLAB会根据新图形的大小,重新改变坐标系的会根据新图形的大小,重新改变坐标系的比例。比例。(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制【例例3 3】:在在同同一一窗窗口口画画出出函函数数sinx在在区区间间0 2的曲的曲线线和和cosx在区在区间间-的曲的曲线线。x1=0:0.1:2*pi;plot(x1,sin(x1)(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制hold onx2=-pi:0.1:pi;plot(x2,cos(x2)(三)(三)图形的比较显示图形的比较显示注:注:坐标系的范围由坐标系的范围由02转变为转变为-2。一、二维曲线的绘制一、二维曲线的绘制2.同一窗口多个子图同一窗口多个子图如果需要在同一个图形窗口中布置几幅独立的如果需要在同一个图形窗口中布置几幅独立的子图,可以在子图,可以在plot命令前加上命令前加上subplot命令来将一命令来将一个图形窗口划分为多个区域,每个区域一幅子图个图形窗口划分为多个区域,每个区域一幅子图。格式:格式:subplot(m,n,k)%使使(mn)幅子图中的第幅子图中的第k幅成为当前图幅成为当前图clf%清除子图清除子图 !说明:说明:子图的序号编排原则是:左上方为第子图的序号编排原则是:左上方为第1幅,先幅,先向右后向下向右后向下向右后向下向右后向下依次排列,子图彼此之间独立。依次排列,子图彼此之间独立。(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制【例例4 4】:在多个窗口中绘制图形。在多个窗口中绘制图形。x=0:0.1:2*pi;subplot(2,2,1)%将图形窗口分割将图形窗口分割为为2行行2列,第列,第1行行第第1列(左上方)列(左上方)为当前图为当前图 plot(x,sin(x)(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制subplot(2,2,2)%右上方为当前图右上方为当前图 plot(x,cos(x)(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制y3=exp(x);subplot(2,2,3)%左下方为当前图左下方为当前图plot(x,y3)(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制subplot(224)%右下方为当前图,省略逗号右下方为当前图,省略逗号 plot(x,log(3*x)(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制3.双双纵纵坐坐标图标图格式:格式:plotyy(x1,y1,x2,y2)%以以左左、右右不不同同纵纵轴轴绘绘制两条曲制两条曲线线说说明明:左左纵纵轴轴用用于于(x1,y1)(x1,y1)数数据据,右右纵纵轴轴用用于于(x2,y2)(x2,y2)数数据据来来绘绘制制两两条条曲曲线线。坐坐标标轴轴的的范范围、刻度都自动产生。围、刻度都自动产生。(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制【例例5 5】:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2)(三)(三)图形的比较显示图形的比较显示一、二维曲线的绘制一、二维曲线的绘制一、二维曲线的绘制一、二维曲线的绘制(三)(三)图形的比较显示图形的比较显示格式:格式:plot3(x,y,z,s)%绘制三维曲线绘制三维曲线 plot3(x1,y1,z1,s1,x2,y2,z2,s2,)%绘制多绘制多条三维曲线条三维曲线说明:当说明:当x、y、z是同维向量时,则绘制以是同维向量时,则绘制以x、y、z元素为坐标的三维曲线;当元素为坐标的三维曲线;当x、y、z是同维矩阵时,是同维矩阵时,则绘制三维曲线的条数等于矩阵的列数。则绘制三维曲线的条数等于矩阵的列数。s是指定线是指定线型、色彩、数据点形的字符串。型、色彩、数据点形的字符串。二、二、MATLABMATLAB的三维图形绘制的三维图形绘制(一)(一)三维曲线图三维曲线图【例例6 6】:绘制方程绘制方程 在在的图像。的图像。t=0:pi/10:2*pi;x=sin(t);y=cos(t);z=t;plot3(x,y,z,m:p)二、二、MATLABMATLAB的三维图形绘制的三维图形绘制(一)(一)三维曲线图三维曲线图 二、二、MATLABMATLAB的三维图形绘制的三维图形绘制(一)(一)三维曲线图三维曲线图 grid on xlabel(Dependent Variable X)ylabel(Dependent Variable Y)zlabel(Independent Variable Z)title(Sine and Cosine Curve)二、二、MATLABMATLAB的三维图形绘制的三维图形绘制(一)(一)三维曲线图三维曲线图 二、二、MATLABMATLAB的三维图形绘制的三维图形绘制(一)(一)三维曲线图三维曲线图(二)(二)三维网线图和曲面图三维网线图和曲面图1.meshgrid命令命令为了绘制三维立体图形,为了绘制三维立体图形,MATLAB的方法是将的方法是将x方向方向划分为划分为m份,将份,将y方向划分为方向划分为n份,份,meshgrid命令是以命令是以x、y向量为基准,来产生在向量为基准,来产生在x-y平面的各栅格点坐标值的矩平面的各栅格点坐标值的矩阵。阵。格式:格式:X,Ymeshgrid(x,y)说明:说明:X、Y是栅格点的坐标,为矩阵;是栅格点的坐标,为矩阵;x、y为向量。为向量。二、二、MATLABMATLAB的三维图形绘制的三维图形绘制(二)(二)三维网线图和曲面图三维网线图和曲面图2.三维网线图三维网线图mesh函数为数据点绘制网格线函数为数据点绘制网格线,图形中的每一个已图形中的每一个已知点和其附近的点用直线连接。知点和其附近的点用直线连接。格式:格式:mesh(z)%画三维网线图画三维网线图 mesh(x,y,z,c)说明:只有参数说明:只有参数z时,以时,以z矩阵的行下标作为矩阵的行下标作为x坐标坐标轴,把轴,把z的列下标当作的列下标当作y坐标轴;坐标轴;x、y分别为分别为x、y坐标坐标轴的自变量;当有轴的自变量;当有x、y、z参数时,参数时,c是指定各点的用是指定各点的用色矩阵,当色矩阵,当c省略时默认用色矩阵是省略时默认用色矩阵是z的数据。的数据。如果如果x、y、z、c四个参数都有,则应该都是维数相同的矩阵。四个参数都有,则应该都是维数相同的矩阵。二、二、MATLABMATLAB的三维图形绘制的三维图形绘制3.三维曲面图三维曲面图surf函函数数和和mesh的的用用法法类类似似,但但它它可可以以画画出出着着色色表表面面图图,图图形形中中的的每每一一个个已已知知点点与与其其相相邻邻点以平面连接。点以平面连接。格式:格式:surf(z)%画三维曲面图画三维曲面图 surf(x,y,z,c)说说明:明:参数参数设设置与置与meshmesh命令相同,命令相同,c c可以省略。可以省略。(二)(二)三维网线图和曲面图三维网线图和曲面图 二、二、MATLABMATLAB的三维图形绘制的三维图形绘制【例例7 7】:分别用分别用meshmesh和和surfsurf函数绘制高斯函数绘制高斯矩阵的曲面。矩阵的曲面。z=peaks(40);mesh(z)surf(z)z=3*(1-x).2.*exp(-(x.2)-(y+1).2).-10*(x/5-x.3-y.5).*exp(-x.2-y.2).-1/3*exp(-(x+1).2-y.2);(二)(二)三维网线图和曲面图三维网线图和曲面图 二、二、MATLABMATLAB的三维图形绘制的三维图形绘制一、二维曲线的绘制(二)三维网线图和曲面图一、二维曲线的绘制(二)三维网线图和曲面图【例例8 8】:绘制方程绘制方程x=-7.5:0.5:7.5;y=x;X,Y=meshgrid(x,y);R=sqrt(X.2+Y.2)+eps;Z=sin(R)./R;surf(X,Y,Z)(二)(二)三维网线图和曲面图三维网线图和曲面图 二、二、MATLABMATLAB的三维图形绘制的三维图形绘制一、二维曲线的绘制(二)三维网线图和曲面图4.其它立体网线图和曲面图其它立体网线图和曲面图meshc:为立体网状图加等高线;为立体网状图加等高线;Meshz:为立体网状图加为立体网状图加“围裙围裙”。(二)(二)三维网线图和曲面图三维网线图和曲面图 二、二、MATLABMATLAB的三维图形绘制的三维图形绘制一、二维曲线的绘制(二)三维网线图和曲面图一、二维曲线的绘制(二)三维网线图和曲面图5改变视角改变视角格式:格式:view(az,el)%通过方位角和俯仰角改变视角通过方位角和俯仰角改变视角view(vx,vy,vz)%通过直角坐标改变视角通过直角坐标改变视角说说明明:azaz(方方位位角角)是是观观察察点点和和坐坐标标原原点点连连线线在在x-x-y y平平面面内内的的投投影影和和y y轴轴负负方方向向的的夹夹角角;elel(俯俯仰仰角角)是是观观察点与坐察点与坐标标原点的原点的连线连线和和x-yx-y平面的平面的夹夹角。角。对对于于这这两两个个角角度度,三三维维图图形形的的默默认认值值分分别别为为-37.5-37.5和和3030,二,二维图维图形的默形的默认值认值是是0 0和和9090。(二)(二)三维网线图和曲面图三维网线图和曲面图 二、二、MATLABMATLAB的三维图形绘制的三维图形绘制【例例9 9】:z=peaks(40);subplot(2,2,1)mesh(z)subplot(2,2,2);mesh(z)view(-37.5,-30)subplot(2,2,3);mesh(z)view(180,0)subplot(2,2,4);mesh(z)view(0,90)(二)(二)三维网线图和曲面图三维网线图和曲面图 二、二、MATLABMATLAB的三维图形绘制的三维图形绘制一、二维曲线的绘制(二)三维网线图和曲面图(一)条形条形图图 条条形形图图常常用用于于对对统统计计的的数数据据进进行行作作图图,特特别别适适用用于少量且离散的数据。于少量且离散的数据。语语法:法:bar(x,y,width,bar(x,y,width,参数参数)%画条形画条形图图bar3(y,z,width,bar3(y,z,width,参数参数)%画三画三维维条形条形图图说说明:明:x x是横坐是横坐标标向量,向量,省略省略时时默默认值认值是是1:m1:m,m m为为y y的向量的向量长长度;度;y y是是纵纵坐坐标标,可以是向量或矩可以是向量或矩阵阵,widthwidth是是竖竖条的条的宽宽度度 ,参数参数有有grouped(grouped(分分组组式式)和和stacked(stacked(累加式累加式)。三、其他图形函数三、其他图形函数(一)条形条形图图 【例例1010】:用条形用条形图图表示某年一月份中表示某年一月份中3 3日日6 6日日连续连续四天的温度数据,四天的温度数据,y y矩矩阵阵的各列分的各列分别别表示表示平均温度、最高温度和最低温度。平均温度、最高温度和最低温度。x=3:6;y=5.3000 13.0000 0.40005.1000 11.8000 -1.70003.7000 8.1000 0.60001.5000 7.7000 -4.5000;bar(x,y)bar3(x,y)bar(x,y,0.5,stack)三、其他图形函数三、其他图形函数(一)条形条形图图 三、其他图形函数三、其他图形函数(一)条形条形图图 三、其他图形函数三、其他图形函数(一)条形条形图图 三、其他图形函数三、其他图形函数(二)面面积图积图和和实实心心图图 1、面积图、面积图函函数数area用用来来绘绘制制面面积积图图,是是在在plot的的基基础础上上填填充充曲曲线线与与横横轴轴之之间间的的面面积积,该该图图用用于于查查看看某某个个数数在在该该列列所所有有数数的的总总和和中中所所占占的的比比例例,只能用于二维绘图。只能用于二维绘图。格式:格式:area(y)%画面积图画面积图area(x,y)三、其他图形函数三、其他图形函数(二)面面积图积图和和实实心心图图 2.实心图实心图函函数数fill用用来来绘绘制制实实心心图图,实实心心图图是是将将数数据据的的起点和终点连成多边形,并填充颜色。起点和终点连成多边形,并填充颜色。格式:格式:fill(x,y,c)%画实心图画实心图说说明:明:c为实为实心心图图的的颜颜色,色,可以用可以用r、g、b、c、m、y、w、k,或,或RGB三元三元组组行向量表示。行向量表示。三、其他图形函数三、其他图形函数(二)面面积图积图和实心图和实心图【例例1111】:x=1:7;y=3,2,5;6,1,8;7,4,9;6,3,7;8,2,9;4,2,9;3,1,7;area(x,y)fill(x,y,r)三、其他图形函数三、其他图形函数(二)面面积图积图和和实实心心图图 三、其他图形函数三、其他图形函数(三)直方直方图图 格式:格式:hist(y,m)%统计每段的元素个数并画出直方图统计每段的元素个数并画出直方图hist(y,x)说明:说明:m是分段的个数,省略时则默认为是分段的个数,省略时则默认为10;x是向量,用于指定所分每个数据段的中间值;是向量,用于指定所分每个数据段的中间值;y可可以是向量或矩阵,如果是矩阵则按列分段。以是向量或矩阵,如果是矩阵则按列分段。三、其他图形函数三、其他图形函数(三)直方直方图图 【例例1212】:y=randn(10,2)y=-0.43256481152822 -0.18670857768144 -1.66558437823810 0.72579054829330 0.12533230647483 -0.58831654301419 0.28767642035855 2.18318581819710 -1.14647135068146 -0.13639588308660 三、其他图形函数三、其他图形函数(三)直方直方图图 1.19091546564300 0.11393131352081 1.18916420165210 1.06676821135919 -0.03763327659332 0.05928146052361 0.32729236140865 -0.09564840548367 0.17463914282092 -0.83234946365002 x=-2:0.5:2;hist(y,x)x=-4:1:5;hist(y,x)三、其他图形函数三、其他图形函数(三)直方直方图图 三、其他图形函数(四)饼图饼图 饼饼图图是是用用于于显显示示向向量量中中的的各各元元素素占占向向量量元元素素总总和和的的百分比。百分比。格式:格式:pie(x,explode,label)%画二维饼图画二维饼图 pie3(x,explode,label)%画三维饼图画三维饼图说说明:明:x x是向量;是向量;explodeexplode是与是与x x同同长长度的向量,用来度的向量,用来决定是否从决定是否从饼图饼图中分离中分离对应对应的一部分的一部分块块,非零元素表,非零元素表示示该该部分需要分离;部分需要分离;labellabel是用来是用来标标注注饼图饼图的字符的字符串数串数组组。三、其他图形函数三、其他图形函数(四)饼图饼图 【例例1212】:某班计算机考试,某班计算机考试,9090分以上分以上3232人,人,80-80-9090分分5858人,人,70-8070-80分分2727人,人,60-7060-70分分2121人,人,6060分以下分以下1616人人。x=32 58 27 21 16;explode=0 0 0 0 1;pie(x,explode)pie(x,explode,90以上以上,80-90,70-80,60-70,60以下以下)三、其他图形函数三、其他图形函数(四)饼图饼图 三、其他图形函数三、其他图形函数添加箭头添加箭头添加直线添加直线添加文字添加文字图图形形对对象象编编辑辑放放大大缩小缩小三三维维图图形形旋转旋转 图形窗口的工具条图形窗口的工具条(一)工具栏 四、图形窗口的功能四、图形窗口的功能(二)菜菜单单 (a)Edit菜单菜单 (b)Insert菜单菜单 四、图形窗口的功能四、图形窗口的功能 五、动画制作五、动画制作 MATLAB提供提供getframe、moviein和和movie函数函数进行动画制作。进行动画制作。1getframe函数函数getframe函数可截取一幅画面信息函数可截取一幅画面信息(称为动画中的一称为动画中的一帧帧),一幅画面信息形成一个很大的列向量。显然,一幅画面信息形成一个很大的列向量。显然,保存保存n幅图面就需一个大矩阵。幅图面就需一个大矩阵。五、动画制作五、动画制作2moviein函数函数moviein(n)函数用来建立一个足够大的函数用来建立一个足够大的n列矩阵。该列矩阵。该矩阵用来保存矩阵用来保存n幅画面的数据,以备播放。之所以要幅画面的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序运行速度。事先建立一个大矩阵,是为了提高程序运行速度。3movie函数函数movie(m,n)函数播放由矩阵函数播放由矩阵m所定义的画面所定义的画面n次,缺次,缺省时播放一次。省时播放一次。【例例1212】:绘制了绘制了peaks函数曲面并且将它绕函数曲面并且将它绕z轴旋转。轴旋转。X,Y,Z=peaks(30);surf(X,Y,Z)axis(-3,3,-3,3,-10,10)axis off;shading interp;colormap(hot);m=moviein(20);%建立一个建立一个20列大矩阵列大矩阵for i=1:20view(-37.5+24*(i-1),30)%改变视点改变视点m(:,i)=getframe;%将图形保存到将图形保存到m矩阵矩阵end movie(m,2);%播放画面播放画面2次次 五、动画制作五、动画制作