第6章MATLAB 绘图(2)

Download Report

Transcript 第6章MATLAB 绘图(2)

第6章 MATLAB 绘图 (2)
第6章 MATLAB 绘图 (2)
6.2 特殊二维图形的绘制
6.2.1 直方图
bar :直方图的绘图函数
• bar(X,Y,WIDTH,参数)
功能:对m×n矩阵Y绘制含有m组、每组n个宽
度为WIDTH柱形条的直方图。向量X为x坐标,
要求递增或递减。参数'grouped'为缺省值,即垂
直的分组直方图,参数'stacked'为绘制垂直的将
n个直方图的值叠加在另一条上的直方图。
• barh(X,Y,WIDTH,参数)
功能:绘制水平直方图。参数含义同函数bar。
MATLAB 7.X程序设计
2/46
第6章 MATLAB 绘图 (2)
• 例6-19
绘制向量(2 6 8 7 8 5)的直方图。
MATLAB 7.X程序设计
3/46
第6章 MATLAB 绘图 (2)
6.2.2 饼图
pie :饼图的绘图函数
• pie(x,explode)
功能:绘制向量x的饼图。如果向量x的元
素和小于1,则绘制不完全的饼图。
explode是与向量x大小相同的向量,并且
其中不为零的元素所对应的相应部分从饼
图中独立出来。
MATLAB 7.X程序设计
4/46
第6章 MATLAB 绘图 (2)
• 例6-20
绘制向量(10 37 5 6 6)的饼图。
MATLAB 7.X程序设计
5/46
第6章 MATLAB 绘图 (2)
6.2.3 离散杆状图
stem:离散杆状图的绘图函数
stem (X,Y, 'filled')
功能:绘制向量X中指定的序列Y的填充的
离散杆状图。
MATLAB 7.X程序设计
6/46
第6章 MATLAB 绘图 (2)
• 例6-21
绘制向量(2 6 8 7 8 5)的离
散杆状图。
MATLAB 7.X程序设计
7/46
第6章 MATLAB 绘图 (2)
6.2.4 阶梯状图
• stairs:阶梯状图的绘图函数
stairs(X,Y,STYLE)
功能:绘制向量X中指定的序列Y的指定线
型的阶梯状图。
MATLAB 7.X程序设计
8/46
第6章 MATLAB 绘图 (2)
• 例6-22
绘制向量(2 6 8 7 8 5)的阶
梯状图。
MATLAB 7.X程序设计
9/46
第6章 MATLAB 绘图 (2)
6.2.5 射线图
compass:射线图的绘图函数
• compass(Z)
功能:把复数矩阵Z中元素的相角和幅值
显示成从原点辐射的箭头。
• compass(X,Y) 等价于compass(X+Y*i)。
• compass(Z,str) 使用str确定的线型绘制
箭头;
MATLAB 7.X程序设计
10/46
第6章 MATLAB 绘图 (2)
• 例6-23
(2
绘制向量(2 -2 1 3 -1)和
2 -2 1 -3)的射线图。
MATLAB 7.X程序设计
11/46
第6章 MATLAB 绘图 (2)
6.2.6
误差条形图
errorbar:误差条形图的绘图函数
• errorbar(x,y,e,s)
功能:绘制向量y对x的误差条形图。误差
条对称地分布在yi的上方和下方,长度为
ei。
• errorbar(x,y,l,u,s)
功能:绘制向量y对x的误差条形图。误差
条分布在yi上方的长度为ui,下方的长度
为li。字符串s设置颜色和线型。
MATLAB 7.X程序设计
12/46
第6章 MATLAB 绘图 (2)
• 例6-24
绘制正弦函数的误差条形图。
MATLAB 7.X程序设计
13/46
第6章 MATLAB 绘图 (2)
6.2.7
彗星图
comet:彗星图的绘图函数
• comet(x,y)
功能:绘制向量y对向量x的彗星轨线。如
果只给出一个向量,则用该向量对其下
标值绘图
• comet(x,y,p)
功能:绘制长度为p*length(y)的彗星轨
线,p的缺省值为0.1。
MATLAB 7.X程序设计
14/46
第6章 MATLAB 绘图 (2)
• 例6-25
绘制彗星图。
t = -pi:pi/200:pi;
comet(t,tan(sin(t))-sin(tan(t)))
MATLAB 7.X程序设计
15/46
第6章 MATLAB 绘图 (2)
6.2.8 圆形图
scatter: 圆形图的绘图函数
• scatter(x,y,size,color)
功能:以具有相同长度的向量x、y所确定
的点为圆心,size (以点为单位)为半径
绘制圆。圆的颜色由字符串color确定,
color是向量、矩阵或颜色值字符串。
MATLAB 7.X程序设计
16/46
第6章 MATLAB 绘图 (2)
• 例6-26
已知圆的圆心分别为(1,2),(2,6),
(3,8),(4,7),(5,8)和(6,5),半径为100,
绘制圆。
MATLAB 7.X程序设计
17/46
6.3
第6章 MATLAB 绘图 (2)
三维绘图
6.3.1 三维曲线
plot3 :三维曲线图形函数
plot3(x,y,z, 's')
功能:绘制三维曲线。
其中当x,y和z是相同的向量时,则绘制以x,y和z元
素为坐标的三维曲线;当x,y和z是同型矩阵时,
则绘制以x,y和z元素为坐标的三维曲线,且曲线
的条数等于矩阵的列数。s是指定绘制三维曲线的线
型、数据点形和颜色的字符串,省略s时,将自动
选择线型、数据点形和颜色。
线型、数据点形和颜色的含义同plot函数。
MATLAB 7.X程序设计
18/46
第6章 MATLAB 绘图 (2)
对参数方程表示的三维曲线的绘制还有一个简
单形式ezplot3, 调用格式为:
• ezplot3 (x,y,z,[tmin,tmax])
功能:绘制区间  tmin tmax 范围内x = x(t), y
= y(t)和z = z(t) 的三维曲线。
参数[tmin,tmax]的默认值为 0 2 。
MATLAB 7.X程序设计
19/46
第6章 MATLAB 绘图 (2)
x  t

• 例6-24 绘制三维曲线  y (t )  sin t
 z (t )  cos t

• 例6-28
。
绘制三维曲线 z  10sin( y) cos( x) 。
 x(t )  sin t

• 例6-29 绘制三维曲线  y(t )  cos t 。
 z (t )  sin t cos t

MATLAB 7.X程序设计
20/46
第6章 MATLAB 绘图 (2)
6.3.2 三维曲面
1 网格坐标矩阵
• meshgrid:网格坐标矩阵的生成函数
[X,Y]=meshgrid(x,y)
功能:由向量x和y产生在x-y平面的各网格点
坐标矩阵(X,Y)。其中向量x为1×m的行
向量,向量y为1×n的行向量,产生的网格
点 坐 标 矩 阵 ( X,Y ) 的 元 素 为 坐 标 对 (X
ij,Y ij),i=1,...,m,j=1,...,n。
MATLAB 7.X程序设计
21/46
第6章 MATLAB 绘图 (2)
注意向量x和y相同时,meshgrid函数也可
以写成[X,Y]=meshgrid(x)。
例如 语句
x=[1 2 3 4];
y=[5 6 7];
[U,V]=meshgrid(x,y)
功能:将x(1×m)向量和y(1×n)向量转换为
(n×m)的矩阵。
MATLAB 7.X程序设计
22/46
第6章 MATLAB 绘图 (2)
用矩阵运算生成的方式产生平面区域内的网格
坐标矩阵的语句:
x=a:dx:b;y=(c:dy:d)';
X=ones(size(y))*x;
Y=y*ones(size(x));
等价语句为:
x=a:dx:b;y=c:dy:d;
[X,Y]=meshgrid(x,y)。
MATLAB 7.X程序设计
23/46
第6章 MATLAB 绘图 (2)
2 三维曲面图
•
surf:三维曲面图的绘制函数为
surf(z)
surf(x,y,z)
功能:绘制三维曲面图。当只有参数z时,以z
矩阵的行下标作为x坐标轴,把z的列下标当
作y坐标轴;x和y分别为x和y坐标轴的自变
量。
当有x,y和z参数时,绘制出由坐标(xij, yij,
zij)确定的表面图形。
MATLAB 7.X程序设计
24/46
第6章 MATLAB 绘图 (2)
三维曲面图的绘制函数ezsurf的格式为:
• ezsurf(f,[xmin,xmax,ymin,ymax])
功能:绘制符号表达式f代表的x、y二元函数的
在[xmin,xmax,ymin,ymax]范围内的三维曲面。
• ezsurf (x,y,z,[smin,smax,tmin,tmax])
功能:绘制在[smin,smax,tmin,tmax]范围内x =
x(s,t), y = y(s,t)和z = z(s,t)的三维曲面。
MATLAB 7.X程序设计
25/46
第6章 MATLAB 绘图 (2)
zx y
• 例6-30
绘制三维网面
• 例6-31
绘制函数 f ( x, y)  ln(1  x  y )
的图形。
2
2
的图形。
2
MATLAB 7.X程序设计
2
26/46
第6章 MATLAB 绘图 (2)
3 三维网格图
• mesh:三维网格图的绘制函数
mesh(z)
mesh(x,y,z)
功能:绘制三维网格图。当只有参数z时,以
z矩阵的行下标作为x坐标轴,把z的列下标
当作y坐标轴;x和y分别为x和y坐标轴的自
变量。
当有x,y和z参数时,绘制出由坐标(xij,
yij, zij)确定的三维网格图形。
MATLAB 7.X程序设计
27/46
第6章 MATLAB 绘图 (2)
• 三维网格图的函数为ezmesh,调用格式为:
ezmesh (f,[xmin,xmax,ymin,ymax])
功能:绘制符号表达式f代表的x和y二元函数
的在[xmin,xmax,ymin,ymax]范围内的三维网
格图。ezmesh (x,y,z,[smin,smax,tmin,tmax])
绘制在[smin,smax,tmin,tmax]范围内x = x(s,t),
y = y(s,t)和z = z(s,t)的三维网格图。
MATLAB 7.X程序设计
28/46
第6章 MATLAB 绘图 (2)
• 例6-32
绘制三维网格图。
• 例6-33
绘制 z  sin( y) cos( x) 的三维网
格曲面图。
• 例6-34
绘制三维曲面 z  sin( x) cos( y)
图中的 z  0.35 部分。
MATLAB 7.X程序设计
29/46
第6章 MATLAB 绘图 (2)
• 例6-35
(1)
(2)
绘制下列函数的曲面图和等高线。
z  ( x  2x)e
2
f ( x, y) 
1
( x  1)  y
2
2
 x2  y2  xy

1
( x  1)2  y 2
MATLAB 7.X程序设计
30/46
第6章 MATLAB 绘图 (2)
6.3.3
色彩处理
1 颜色的向量表示
颜色
RGB三元组
黑
0
0
白
1
1
红
1
0
绿
0
1
蓝
0
0
黄
1
1
MATLAB 7.X程序设计
0
1
0
0
1
0
31/46
第6章 MATLAB 绘图 (2)
2 色图
• 函数colormap定义色图
colormap(m)
功能:设置m为色图矩阵。
MATLAB 7.X程序设计
32/46
第6章 MATLAB 绘图 (2)
• 例6-36
绘制三维曲面和三维网格图,并设
置色图为洋红色和红黄阴影彩色。
MATLAB 7.X程序设计
33/46
第6章 MATLAB 绘图 (2)
3 三维表面图形的着色
着色方式三种:
• shading flat
功能:对小片或整段网格线着同一种颜色。
• shading faceted
功能:在flat着色的基础上同时在小片交接的边勾
画黑色,这种方式立体表现力最强(默认方式)。
• shading interp
功能:着色时使小片根据四顶点的颜色产生连续
的变化,或根据网格线的线段两端产生连续的变
化,这种方式着色细腻但费时间。
MATLAB 7.X程序设计
34/46
第6章 MATLAB 绘图 (2)
• 例6-37
三种图形着色方式的效果比较。
MATLAB 7.X程序设计
35/46
第6章 MATLAB 绘图 (2)
6.3.4 图像的读写和动画处理
1 图像的读写
• A=imread(filename,FMT)
功 能 : 将 文 件 格 式 为 FMT 的 图 像 文 件
filename读入MATLAB工作空间变量A中。
• imwrite(A, filename,FMT)
功能:将图像数据的存放矩阵A和色图矩阵
写入格式为FMT的图像文件filename中。
• image(A)
功能:显示数据存放矩阵A的图像。
MATLAB 7.X程序设计
36/46
第6章 MATLAB 绘图 (2)
• 例6-38
图像文件的读取和图像的显示。
MATLAB 7.X程序设计
37/46
第6章 MATLAB 绘图 (2)
2 动画处理
• getframe
功能:截取每一幅画面信息而形成一个很
大的列向量并保存到一个变量中。
• moviein(n)
功能:建立n列矩阵,用来保存n幅画面的
数据,以备播放。
• movie(m,n)
功能:以每秒n幅图形的速度播放由矩阵m
的列向量所组成的画面。
MATLAB 7.X程序设计
38/46
第6章 MATLAB 绘图 (2)
6.3.5 特殊三维绘图的绘制
1 三维直方图
bar3:三维直方图的绘制函数
• bar3(y,z,width,模式)
功能:绘制矩阵z的三维直方图。要求向量y自动
增加或减小。模式参数有detached(分离式),
grouped(分组式)和stacked(累加式),省略时默
认为grouped。
• bar3(z,width, 模式)
功能:绘制矩阵z的三维直方图。省略时向量y默
认值是1:m。其中参数width指定竖条的宽度,省
略时默认宽度是0.8,如果宽度大于1,则条与条
之间将重叠。模式参数同bar3(y,z,width,模式)。
函数bar3h是绘制三维水平条形图。
MATLAB 7.X程序设计
39/46
第6章 MATLAB 绘图 (2)
• 例6-40
用三维直方图表现矩阵。
MATLAB 7.X程序设计
40/46
第6章 MATLAB 绘图 (2)
2 三维饼图
• pie3:三维饼图的绘制函数
pie3(x,explode)
功能:绘制向量x的三维饼图。explode
是与x同长度的向量,用来决定是否从饼
图中分离对应的一部分。
MATLAB 7.X程序设计
41/46
第6章 MATLAB 绘图 (2)
• 例6-41
分别用二维、三维饼图表现向量
MATLAB 7.X程序设计
42/46
第6章 MATLAB 绘图 (2)
3 填充图
• fill3:绘制填充图函数
fill3(x,y,z,c)
功能:绘制向量x,y和z的填充图。其中c为实
心图的颜色,可以用'r','g','b', 'c',
'm','y','w',k'(含义同plot函数),或
RGB三元组行向量表示。
MATLAB 7.X程序设计
43/46
第6章 MATLAB 绘图 (2)
•例
6-42
绘制x=sint,y=cost的填充图。
MATLAB 7.X程序设计
44/46
第6章 MATLAB 绘图 (2)
4
离散杆图
stem3: 绘制离散杆图函数
• stem3 (Z,'filled')
功能:绘制x-y平面的Z的离散表面图。
• stem3 (X,Y,Z,'filled')
功能:绘制在指定的(x,y)的Z的离散
表面图。其中参数'filled'表示填充标志。
MATLAB 7.X程序设计
45/46
第6章 MATLAB 绘图 (2)
• 例6-43
用三维离散杆图表现一个离散方
波的快速Fourier变换的振幅。
MATLAB 7.X程序设计
46/46