第五章MATLAB的绘画与图形处理.docx
- 文档编号:15076719
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:29
- 大小:813.42KB
第五章MATLAB的绘画与图形处理.docx
《第五章MATLAB的绘画与图形处理.docx》由会员分享,可在线阅读,更多相关《第五章MATLAB的绘画与图形处理.docx(29页珍藏版)》请在冰点文库上搜索。
第五章MATLAB的绘画与图形处理
第五章MATLAB的绘画与图形处理
MATLAB具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的优秀可视化。
5.1二维曲线的绘制
5.1.1基本绘图命令plot
plot命令是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=[011223];
>>y2=[110011];
>>plot(x2,y2);
>>axis([04,02])%将坐标轴范围设定为0-4和0-2
2.plot(x1,y1,x2,y2,…)绘制多条曲线
plot命令还可以同时绘制多条曲线,用多个矩阵对为参数,MATLAB自动以不同的颜色绘制不同曲线。
【例5.2】绘制三条曲线,如图5.2所示。
>>
x=0:
0.1:
2*pi;
>>plot(x,sin(x),x,cos(x),x,sin(3*x))%画三条曲线
5.1.2绘制曲线的一般步骤
表5.1为绘制二维、三维图形一般步骤的归纳。
表5.1 绘制二维、三维图形的一般步骤
步骤
内容
1
曲线数据准备:
对于二维曲线,横坐标和纵坐标数据变量;
对于三维曲面,矩阵参变量和对应的函数值。
2
指定图形窗口和子图位置:
默认时,打开FigureNo.1窗口或当前窗口、当前子图;
也可以打开指定的图形窗口和子图。
3
设置曲线的绘制方式:
线型、色彩、数据点形。
4
设置坐标轴:
坐标的范围、刻度和坐标分格线
5
图形注释:
图名、坐标名、图例、文字说明
6
着色、明暗、灯光、材质处理(仅对三维图形使用)
7
视点、三度(横、纵、高)比(仅对三维图形使用)
8
图形的精细修饰(图形句柄操作):
利用对象属性值设置;
利用图形窗工具条进行设置。
说明:
▪步骤1和3是最基本的绘图步骤,如果利用MATLAB的默认设置通常只需要这两个基本步骤就可以基本绘制出图形,而其他步骤并不完全必需。
▪步骤2一般在图形较多的情况下,需要指定图形窗口、子图时使用。
▪除了步骤1、2、3的其他步骤用户可以根据自己需要改变前后次序。
5.1.3多个图形绘制的方法
1.指定图形窗口
如果需要多个图形窗口同时打开时,可以使用figure语句。
语法:
figure(n)%产生新图形窗口
说明:
如果该窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为“FigureNo.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))
如果在使用绘图命令之后,想清除图形窗口画其它图形,应使用“clf”命令清图形窗。
>>clf%清除子图
3.同一窗口多次叠绘
为了在一个坐标系中增加新的图形对象,可以用“hold”命令来保留原图形对象。
语法:
holdon%使当前坐标系和图形保留
holdoff%使当前坐标系和图形不保留
hold%在以上两个命令中切换
说明:
在设置了“holdon”后,如果画多个图形对象,则在生成新的图形时保留当前坐标系中已存在的图形对象,MATLAB会根据新图形的大小,重新改变坐标系的比例。
【例5.4】在同一窗口画出函数sinx在区间[02π]的曲线和cosx在区间[-ππ]的曲线,如图5.7所示。
>>x1=0:
0.1:
2*pi;
>>plot(x1,sin(x1))
>>holdon
>>x2=-pi:
.1:
pi;
>>plot(x2,cos(x2))
程序分析:
坐标系的范围由0~2π转变为-π~2π。
图5.4用holdon在同一窗口画出两条曲线
5.1.4曲线的线型、颜色和数据点形
plot命令还可以设置曲线的线段类型、颜色和数据点形等,如表5.2所示。
表5.2线段、颜色与数据点形
颜色
数据点间连线
数据点形
类型
符号
类型
符号
类型
符号
黄色
品红色(紫色)
青色
红色
绿色
蓝色
白色
黑色
y(Yellow)
m(Magenta)
c(Cyan)
r(Red)
g(Green)
b(Blue)
w(White)
k(Black)
实线(默认)
点线
点划线
虚线
-
:
-.
--
实点标记
圆圈标记
叉号形×
十字形+
星号标记*
方块标记□
钻石形标记◇
向下的三角形标记
向上的三角形标记
向左的三角形标记
向右的三角形标记
五角星标记☆
六连形标记
.
o
x
+
*
s
d
v
^
<
>
p
h
语法:
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-.')%用红色点划线画出曲线
>>holdon
>>plot(x,cos(x),'b:
o')%用蓝色圆圈画出曲线,用点线连接
5.1.5设置坐标轴和文字标注
1.坐标轴的控制
用坐标控制命令axis来控制坐标轴的特性,表5.3列出其常用控制命令。
表5.3 常用的坐标控制命令
命令
含义
命令
含义
axisauto
使用默认设置
axisequal
纵、横轴采用等长刻度
axismanual
使当前坐标范围不变
axisfill
在manual方式下起作用,使坐标充满整个绘图区
axisoff
取消轴背景
axisimage
纵、横轴采用等长刻度,且坐标框紧贴数据范围
axison
使用轴背景
axisnormal
默认矩形坐标系
axisij
矩阵式坐标,原点在左上方
axissquare
产生正方形坐标系
axisxy
普通直角坐标,原点在左下方
axistight
把数据范围直接设为坐标范围
axis([xmin,xmax,ymin,ymax])
设定坐标范围,必须满足xmin axisvis3d 保持高宽比不变,用于三维旋转时避免图形大小变化 2.分格线和坐标框 (1)使用grid命令显示分格线 语法: gridon%显示分格线 gridoff%不显示分格线 grid %在以上两个命令间切换 说明: 不显示分格线是MATLAB的默认设置。 分格线的疏密取决于坐标刻度,如果要改变分格线的疏密,必须先定义坐标刻度。 (2)使用box命令显示坐标框 语法: boxon%使当前坐标框呈封闭形式 boxoff%使当前坐标框呈开启形式 box%在以上两个命令间切换 说明: 在默认情况下,所画的坐标框呈封闭形式。 【例5.6】在两个子图中使用坐标轴、分格线和坐标框控制,如图5.6所示。 >>x=0: 0.1: 2*pi; >>subplot(2,1,1) >>plot(sin(x),cos(x)) >>axisequal%纵、横轴采用等长刻度 >>gridon%加分格线 >>subplot(2,1,2) >>plot(x,exp(-x)) >>axis([0,3,0,2])%改变坐标轴范围 3.文字标注 (1)添加图名 语法: title(s)%书写图名 说明: s为图名,为字符串,可以是英文或中文。 (2)添加坐标轴名 语法: xlabel(s)%横坐标轴名 ylabel(s)%纵坐标轴名 (3)添加图例 语法: legend(s,pos)%在指定位置建立图例 legendoff%擦除当前图中的图例 说明: 参数s是图例中的文字注释,如果多个注释则可以用’s1’,’s2’,…的方式;参数pos是图例在图上位置的指定符,它的取值如表5.4所示。 表5.4 pos取值所对应的图例位置 pos取值 0 1 2 3 4 -1 图例位置 自动取最佳位置 右上角(默认) 左上角 左下角 右下角 图右侧 用legend命令在图形窗口中产生图例后,还可以用鼠标对其进行拖拉操作,将图例拖到满意的位置。 (4)添加文字注释 语法: text(xt,yt,s)%在图形的(xt,yt)坐标处书写文字注释 【例5.7】在图形窗口中添加文字注释,如图5.7所示。 >>x=0: 0.1: 2*pi; >>plot(x,sin(x)) >>holdon >>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.2MATLAB的三维图形绘制 5.2.1绘制三维曲线图命令plot3 plot3是用来绘制三维曲线的,它的使用格式与二维绘图的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()等函数进行三维图形绘制,具体的函数调用格式为: [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为向量。 例如,将x(1×m)向量和y(1×n)向量转换为(n×m)的矩阵: >>x=[1234]; >>y=[567]; >>[X,Y]=meshgrid(x,y) X= 1234 1234 1234 Y= 5555 6666 7777 【例5.9】使用peaks函数来测试meshgrid命令,并使用mesh命令来查看meshgrid的输出。 (MATLAB提供了peaks函数,peaks是Matlab内置的,常用于做演示使用的函数,特别是绘制三维图形的时候,peaks函数根据输入参数不同,返回一个山峰的三维坐标数据) 在下面的图5.9中可以看到。 其x和y坐标分别为在[-33]范围内的49×49的矩阵,z坐标与x、y的关系为: 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) >>x=linspace(-3,3,49); >>y=linspace(-3,3,49); >>[X,Y]=meshgrid(x,y);%产生49*49的栅格点坐标 >>mesh(X)%查看xx的网线图 >>mesh(Y) X和Y分别为49×49的矩阵,如图5.9为X和Y的网状图。 >>Z=3*(1-xx).^2.*exp(-(xx.^2)-(yy+1).^2)... -10*(xx/5-xx.^3-yy.^5).*exp(-xx.^2-yy.^2)... -1/3*exp(-(xx+1).^2-yy.^2);%产生peaks函数 >>plot3(X,Y,Z) 2.三维网线图 语法: 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四个参数都有,则应该都是维数相同的矩阵。 【例5.9续】用mesh查看peaks函数的三维网线图,如图5.10所示。 >>mesh(X,Y,Z) 3.三维曲面图 语法: surf(z)%画三维曲面图 surf(x,y,z,c) 说明: 参数设置与mesh命令相同,c也可以省略。 【例5.9续】用surf查看peaks函数的三维曲面图,如图5.11所示。 >>surf(X,Y,Z) 4.其它立体网线图和曲面图 meshc命令为立体网状图加等高线;meshz为立体网状图加“围裙”。 【例5.9续】用meshz和meshc查看peaks函数的三维曲面图,如图5.12所示。 >>meshz(X,Y,Z) >>meshc(X,Y,Z) 【例5.10】用各种曲面图表现函数 。 -4 clf; x=-4: 4; y=x; [X,Y]=meshgrid(x,y);%生成x-y坐标“格点”矩阵 Z=X.^2+Y.^2;%计算格点上的函数值 subplot(2,2,1) mesh(X,Y,Z)%绘制三维网线图 holdon, subplot(2,2,2) surf(X,Y,Z);%绘制三维曲面图 holdon, subplot(2,2,3) meshz(X,Y,Z)%为立体网状图加“围裙” subplot(2,2,4) meshc(X,Y,Z)%为立体网状图加等高线 上机练习2 上机练习: 【例5.10】,【练习1】熟悉matlab三维曲线的绘制 【练习1】在一个画面上作四个图,第一个显示曲线 ;第二个显示曲线 ;第三个显示 的网格图,第四个显示上述曲面的有阴影着色的网格图. m文件程序如下: subplot(2,2,1) x=-2: 0.05: 2; y=x.^2; plot(x,y)%第一个图 subplot(2,2,2) t=linspace(0,6*pi); x=exp(-0.1*t).*cos(t); y=exp(-0.1*t).*sin(t); z=t; plot3(x,y,z)%第二个图 subplot(2,2,3) x=linspace(-5,5,25); y=linspace(-5,5,25); [X,Y]=meshgrid(x,y);%meshgrid的用法前面有介绍 Z=2-X.^2-Y.^2; mesh(X,Y,Z)%第三个图 subplot(2,2,4) surf(X,Y,Z)%第四个图 结果如图5.13所示 图5.13 5.2.3立体图形与图轴的控制 1.网格的隐藏 如果要使被遮盖的网格也能呈现出来,可用“hiddenoff”命令。 语法: hiddenoff%显示被遮盖的网格 hiddenon%隐藏被遮盖的网格 【例5.11】显示被遮盖的网格,如图5.14所示。 >>[x,y,z]=peaks;%peaks函数 >>mesh(x,y,z)%绘制曲面图 >>hiddenoff%显示网格 2.改变视角 三维图形的观测角度不同则显示也不同,如果要改变观测角度,可用“view”命令。 语法: view([az,el])%通过方位角和俯仰角改变视角 view([vx,vy,vz])%通过直角坐标改变视角 说明: az表示方位角,el表示俯仰角;vx、vy、vz表示直角坐标。 【例5.11续】改变peaks函数的视角,如图5.15所示。 >>view(0,0) >>view(0,90) >> view(-37.5,30)%恢复原视角 程序分析: 视角为(0,0),得到一个(x,z)的二维图形效果;视角为(0,90),得到一个(x,y)的二维图形效果。 3.曲面的镂空 【例5.11续】对peaks函数曲面实现镂空效果,如图5.16所示。 >>z(10: 20,10: 20)=nan;%将一部分数值用nan替换 >> surf(x,y,z)%画曲面图 4.其它绘图命令 MATLAB提供的较常用绘图命令还有如表3.3所示。 表3.3符号表达式和字符串的绘图命令 命令名 含义 举例 ezcontour 画等高线 ezcontour('x*sin(t)',[-4,4]) ezcontourf 画带填充颜色等高线 ezcontourf('x*sin(t)',[-4,4]) ezmesh 画三维网线图 ezmesh('sin(x)*exp(-t)','cos(x)*exp(-t)','x',[0,2*pi]) ezmeshc 画带等高线的三维网线图 ezmeshc('sin(x)*t',[-pi,pi]) ezpolar 画极坐标图 ezpolar('sin(t)',[0,pi/2]) ezsurf 画三维曲面图 ezsurf('x*sin(t)','x*cos(t)','t',[0,10*pi]) ezsurfc 画带等高线的三维曲面图 ezsurfc('x*sin(t)','x*cos(t)','t',[0,pi,0,2*pi]) 说明: 这些命令的举例都是对字符串函数进行绘图,同样也可用于符号表达式绘图。 5.3MATLAB的特殊图形绘制 5.3.1条形图 条形图常用于对统计的数据进行作图,特别适用于少量且离散的数据。 绘制条形图的函数如表4.10所示。 表4.10条形图函数 函数 功能 函数 功能 bar 垂直条形图 bar3 三维垂直条形图 barh 水平条形图 bar3h 三维水平条形图 语法: bar(x,y,width,'参数')%画条形图 bar3(y,z,width,'参数')%画三维条形图 说明: x是横坐标向量,省略时默认值是1: m,m为y的向量长度;y是纵坐标,可以是向量或矩阵,当是向量时每个元素对应一个竖条,当是m×n的矩阵时,将画出m组竖条每组包含n条;width是竖条的宽度,省略时默认宽度是0.8,如果宽度大于1,则条与条之间将重叠;'参数'有grouped(分组式)和stacked(累加式),省略时默认为grouped。 bar3命令的格式也相同,y必须是单调增加或减小,省略时为1: m;'参数'除了grouped和stacked还有detached(分离式)。 【例5.12】用条形图表示某年一月份中3日~6日连续四天的温度数据,y矩阵的各列分别表示平均温度、最高温度和最低温度,如图5.17所示,用条形图和三维条形图分别表示。 >>x=3: 6; >>y=[5.300013.00000.4000 5.100011.8000-1.7000 3.70008.10000.6000 1.50007.7000-4.5000] >>bar(x,y)%画条形图 >> bar3(x,y)%画三维条形图 程序分析: 由上图看出条形图是按行分组的,每组为每天的平均温度、最高温度和最低温度。 5.3.2面积图和实心图 1.面积图 面积图是在曲线与横轴之间填充颜色,用于绘制面积图的命令为“area”,只能用于二维绘图。 语法: area(y)%画面积图 area(x,y) 说明: y可以是向量或矩阵,如果y是向量则绘制的曲线和plot命令相同,只是曲线和横轴之间填充颜色,如果y是矩阵则每列向量的数据构成面积叠加起来;x是横坐标,当x省略时则横坐标为1: size(y,1)。 2.实心图 实心图是将数据的起点和终点连成多边形,并填充颜色,绘制实心图的命令为“fill”。 语法: fill(x,y,c)%画实心图 说明: c为实心图的颜色,可以用'r'、'g'、'b'、'c'、'm'、'y'、'w'、'k',或RGB三元组行向量表示,也可以省略。 【例5.12续】绘制面积图和实心图,并比较其区别,如图5.18所示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 MATLAB 绘画 图形 处理