当前位置:文档之家› 第五章MATLAB的绘画与图形处理

第五章MATLAB的绘画与图形处理

第五章 MATLAB 的绘画与图形处理MATLAB 具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的优秀可视化。

5.1二维曲线的绘制5.1.1基本绘图命令plotplot 命令是MATLAB 中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。

1. plot(x,y) 语法:plot(x,y) %绘制以x 为横坐标y 为纵坐标的二维曲线【例5.1】绘制正弦曲线y=sin(x)和方波曲线,如图5.1所示。

>> x1=0:0.1:2*pi; >> y1=sin(x1); %y1为x1的正弦函数 >> plot(x1,y1);>> x2=[0 1 1 2 2 3 ]; >> y2=[1 1 0 0 1 1 ];>> plot(x2,y2);>> axis([0 4,0 2])%将坐标轴范围设定为0-4和0-22. plot(x1,y1,x2,y2,…)绘制多条曲线plot 命令还可以同时绘制多条曲线,用多个矩阵对为参数,MATLAB 自动以不同的颜色绘制不同曲线。

【例5.2】绘制三条曲线,如图5.2所示。

图5.1 (a) 正弦曲线(b) 方波曲线>> x=0:0.1:2*pi;>> plot(x,sin(x),x,cos(x),x,sin(3*x)) %画三条曲线图5.2 三条曲线5.1.2绘制曲线的一般步骤表5.1为绘制二维、三维图形一般步骤的归纳。

表5.1绘制二维、三维图形的一般步骤内容曲线数据准备:对于二维曲线,横坐标和纵坐标数据变量;说明:▪步骤1和3是最基本的绘图步骤,如果利用MA TLAB的默认设置通常只需要这两个基本步骤就可以基本绘制出图形,而其他步骤并不完全必需。

▪步骤2一般在图形较多的情况下,需要指定图形窗口、子图时使用。

除了步骤1、2、3的其他步骤用户可以根据自己需要改变前后次序。

5.1.3多个图形绘制的方法1. 指定图形窗口如果需要多个图形窗口同时打开时,可以使用figure语句。

语法:figure(n) %产生新图形窗口说明:如果该窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为“Figure No.n”,而不关闭其它窗口。

2. 同一窗口多个子图如果需要在同一个图形窗口中布置几幅独立的子图,可以在plot命令前加上subplot命令来将一个图形窗口划分为多个区域,每个区域一幅子图。

语法:subplot(m,n,k) %使(m×n)幅子图中的第k幅成为当前图说明:将图形窗口划分为m×n幅子图,k是当前子图的编号,“,”可以省略。

子图的序号编排原则是:左上方为第1幅,先向右后向下依次排列,子图彼此之间独立。

【例5.3】用subplot命令画四个子图,如图5.3所示。

>> x=0:0.1:2*pi;>> subplot(2,2,1) %分割为2*2个子图,左上方为当前图>> plot(x,sin(x))>> subplot(2,2,2) %右上方为当前图>> plot(x,cos(x))>> subplot(2,2,3) %左下方为当前图>> plot(x,sin(3*x))>> subplot(224) %右下方为当前图,省略逗号>> plot(x,cos(3*x))图5.3 四个子图如果在使用绘图命令之后,想清除图形窗口画其它图形,应使用“clf”命令清图形窗。

>>clf %清除子图3. 同一窗口多次叠绘为了在一个坐标系中增加新的图形对象,可以用“hold”命令来保留原图形对象。

语法:hold on %使当前坐标系和图形保留hold off %使当前坐标系和图形不保留hold %在以上两个命令中切换说明:在设置了“hold on”后,如果画多个图形对象,则在生成新的图形时保留当前坐标系中已存在的图形对象,MATLAB会根据新图形的大小,重新改变坐标系的比例。

【例5.4】在同一窗口画出函数sinx在区间[0 2π]的曲线和cosx在区间[-ππ]的曲线,如图5.7所示。

>> x1=0:0.1:2*pi;>> plot(x1,sin(x1))>> hold on>> x2=-pi:.1:pi;>> plot(x2,cos(x2))程序分析:坐标系的范围由0~2π转变为-π~2π。

图5.4 用hold on在同一窗口5.1.4曲线的线型、颜色和数据点形plot命令还可以设置曲线的线段类型、颜色和数据点形等,如表5.2所示。

表5.2 线段、颜色与数据点形数据点间连线数据点形符号类型符号类型语法:plot(x,y, s)说明:x 为横坐标矩阵,y 为纵坐标矩阵,s 为类型说明字符串参数;s 字符串可以是线段类型、颜色和数据点形三种类型的符号之一,也可以是三种类型符号的组合。

【例5.5】用不同线段类型、颜色和数据点形画出sinx 和cosx 曲线,如图5.5所示。

>> x=0:0.1:2*pi;>> plot(x,sin(x),'r-.') %用红色点划线画出曲线>> hold on>> plot(x,cos(x),'b:o')%用蓝色圆圈画出曲线,用点线连接5.1.5设置坐标轴和文字标注1. 坐标轴的控制用坐标控制命令axis 来控制坐标轴的特性,表5.3列出其常用控制命令。

表5.3 常用的坐标控制命令含义命令 含义使用默认设置 axis equal 纵、横轴采用等长刻度使当前坐标范围不变 axis fill 在manual 满整个绘图区取消轴背景 axis image 纵、图5.5在同一窗口画出两条曲线2. 分格线和坐标框(1) 使用grid命令显示分格线语法:grid on %显示分格线grid off %不显示分格线grid%在以上两个命令间切换说明:不显示分格线是MATLAB的默认设置。

分格线的疏密取决于坐标刻度,如果要改变分格线的疏密,必须先定义坐标刻度。

(2) 使用box命令显示坐标框语法:box on %使当前坐标框呈封闭形式box off %使当前坐标框呈开启形式box %在以上两个命令间切换说明:在默认情况下,所画的坐标框呈封闭形式。

【例5.6】在两个子图中使用坐标轴、分格线和坐标框控制,如图5.6所示。

>> x=0:0.1:2*pi;>> subplot(2,1,1)>> plot(sin(x),cos(x))>> axis equal %纵、横轴采用等长刻度>> grid on %加分格线>> subplot(2,1,2)>> plot(x,exp(-x))>> axis([0,3,0,2]) %改变坐标轴范围图5.6 用坐标轴、分格线和坐标框控制3. 文字标注(1) 添加图名语法:title(s) %书写图名说明:s为图名,为字符串,可以是英文或中文。

(2) 添加坐标轴名语法:xlabel(s) %横坐标轴名ylabel(s) %纵坐标轴名(3) 添加图例语法:legend(s,pos) %在指定位置建立图例legend off %擦除当前图中的图例说明:参数s是图例中的文字注释,如果多个注释则可以用’s1’,’s2’,…的方式;参数pos 是图例在图上位置的指定符,它的取值如表5.4所示。

表5.4pos取值所对应的图例位置用legend命令在图形窗口中产生图例后,还可以用鼠标对其进行拖拉操作,将图例拖到满意的位置。

(4) 添加文字注释语法:text(xt,yt,s) %在图形的(xt,yt)坐标处书写文字注释【例5.7】在图形窗口中添加文字注释,如图5.7所示。

>> x=0:0.1:2*pi;>> plot(x,sin(x))>> hold on>> plot(x,cos(x),'ro')>> title('y1=sin(x),y2=cos(x)') %添加标题>> xlabel('x') %添加横坐标名>> legend('sin(x)','cos(x)',4) %在右下角添加图例>> text(pi,sin(pi),'x=\pi') %在pi,sin(pi)处添加文字注释上机练习1:上机练习:例5.3~5.7,熟悉matlab 二维曲线的绘制5.2 MATLAB 的三维图形绘制5.2.1绘制三维曲线图命令plot3plot3是用来绘制三维曲线的,它的使用格式与二维绘图的plot 命令很相似。

语法:plot3(x,y,z,s) %绘制三维曲线 plot3(x1,y1,z1, s1,x2,y2,z2,s2,…) %绘制多条三维曲线说明:当x 、y 、z 是同维向量时,则绘制以x 、y 、z 元素为坐标的三维曲线;当x 、y 、z 是同维矩阵时,则绘制三维曲线的条数等于矩阵的列数。

s 是指定线型、色彩、数据点形的字符串。

【例5.8】三维曲线绘图,如图5.8所示。

绘制三维图形,y=sin(x),z=cos(x); 在(0,20*pi )之间的图形。

>>x=0:0.1:20*pi; >> y=sin(x); >> z=cos(x);>> plot3(x,y,z);%按系统默认设置绘图5.2.2绘制三维网线图和曲面图如果已知二元函数z=f(x,y),则可以绘制出该函数的三维曲面图。

在绘制三维图之前应先调用meshgrid()函数生成网格矩阵数据x和y,这样即可按函数公式用点运算的方式计算出z 矩阵,之后用mesh()或surf()等函数进行三维图形绘制,具体的函数调用格式为:图5.8 三维曲线[X,Y]=meshgrid(x,y);生成网格数据Z=…,例如Z=X.*Y;计算二元函数Z的矩阵Mesh(X,Y,Z);绘制网线图Surf(X,Y,Z);绘制曲面图1. meshgrid命令为了绘制三维立体图形,MATLAB的方法是将x方向划分为m份,将y方向划分为n 份,meshgrid命令是以x、y向量为基准,来产生在x-y平面的各栅格点坐标值的矩阵。

语法:[X,Y]=meshgrid(x,y)说明:X、Y是栅格点的坐标,为矩阵;x、y为向量。

相关主题