目录
专题四 MATLAB绘图
4.1 二维曲线
4.1.1 plot函数
(1)plot函数的基本用法
plot(x,y)
其中,x和y分别用于存储x坐标和y坐标数据。通常,x和y为长度相同的向量。
例1 绘制一条折线。
(2)最简单的plot函数调用格式
plot(x)
- 当x为实向量时,以向量x的元素序号为横坐标,元素的值为纵坐标绘制曲线。
- 当plot函数的参数x是复数向量时,则分别以该向量元素实部和虚部为横、纵坐标绘制曲线。
复型变量也可以用complex函数构建 cx=complex(x,y)
(3)plot(x,y)函数参数的变化形式
- 当x是向量,y是矩阵时
如果矩阵y的列数等于x的长度,则以向量x为横坐标,以y的每个行向量为纵坐标绘制曲线,曲线的条数等于y的行数。
如果矩阵y的行数等于x的长度,则以向量x为横坐标,以y的每个列向量为纵坐标绘制曲线,曲线的条数等于y的列数。
例2 绘制sin(x)、sin(2x)、sin(x/2)的函数曲线。
- 当x、y是同型矩阵时
以x、y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。
(4)含多个输入参数的plot函数
plot(x1,y1,x2,y2,x3,y3……,xn,yn)
其中,每一向量对构成一组数据点的横、纵坐标,绘制一条曲线。
例3 采用不同个数的数据点绘制正弦函数曲线,观察曲线形态。
(5)含选项的plot函数
plot(x,y,选项)
其中,选项用于指定曲线的线型、颜色和数据点标记。
例4
4.1.2 fplot函数
使用plot函数绘图时,先要取得x,y坐标,然后再绘制曲线,x往往采取等间隔采样。在实际应用中,函数随着自变量的变化趋势未知,或者在不同区间函数频率特性差别大,此时使用plot函数绘制图形,如果自变量的采样间隔设置不合理,则无法反映函数的变化趋势。
实际问题中,函数随着自变量的变化趋势往往未知,而plot函数的x取值一般数等间隔的,会影响实际函数的变化趋势。如例5
例5 绘制函数sin(1/x)的图形(反例)。
fplot函数可以解决这个问题
(1)fplot函数的基本用法
fplot(f,lims,选项)
其中,f代表一个函数,通常采用函数句柄的形式。lims为x轴的取值范围,用二元向量[xmin,xmax]描述,默认值为[-5,5]。选项定义与plot函数相同。
例6 采用fplot函数绘制函数sin(1/x)。
(2)双输入函数参数用法
fplot(funx,funy,tlims,选项)
其中,funx、funy代表函数,通常采用函数句柄形式。tlims为参考函数funx和funy的自变量的取值范围,用二元向量[tmin,tmax]描述。
例7
4.2 绘制图形的辅助操作
4.2.1 给图形添加标注
(1)title函数
- title函数的基本用法
title(图形标题)
例1 绘制[-2Π,2Π]区间的正弦函数并给图形添加标题。
- 在图形标题中使用LaTeX格式控制符
受LaTeX格式控制的部分要用大括号括起来。
- 含属性设置的title函数
title(图形标准,属性名,属性值)
Color属性:用于设置图形标题文本的颜色。
FontSize属性:用于设置标题文字的字号。
(2)xlabel函数和ylabel函数
xlabel(x轴说明)
ylabel(y轴说明)
绘制[-2Π,2Π]区间的正弦曲线并给x轴添加标签。
(3)text函数和gtext函数
text(x,y,说明)
gtext(说明):随着鼠标十字光标的移动确定说明位置
在前面的图形中添加文字说明。
(4)legend函数
legend(图例1,图例2,……)
例2 绘制不同频率的正弦曲线并用图例标注曲线。
4.2.2 坐标控制
(1)axis函数
- axis函数的基本用法
axis([xmin,xmax,ymin,ymax,zmin,zmax])
- axis的其他用法
axis equal:纵、横坐标轴采用等长刻度
axis square:产生正方形坐标系(默认为矩形)
axis auto:使用默认设置
axis off:取消坐标轴
axis on:显示坐标轴
(2)给坐标系加网格、边框
grid on:控制显示网格线
grid off:控制不显示网格线
grid:用于在两种状态之间进行切换
程序中没有grid命令,默认是无网格线
box on:x控制显示边框线
box off:控制不显示边框线
box:用于在两种状态之间进行切换
程序中没有box命令,默认是无边框
例3 绘制sinX、sin(2x)、sin(x/2)的函数曲线并添加图形标注。
4.2.3 图形保持
hold on:控制保持原有图形
hold off:控制刷新图形窗口
hold:用于在两种状态下切换
例子 用图形保持功能绘制两个同心圆
4.2.4 图形窗口的分割
- 子图:同一图形窗口中的不同坐标系下的图形称为子图。
- subplot函数
subplot(m,n,p)
其中,m和n指定将图形窗口分成m×n个绘图区,p指定当前活动区。
例1
例2
4.3 其他形式的二维曲线
4.3.1 其他坐标下的二维曲线图
(1)对数坐标图
semilogx(x1,y1,选项1,x2,y2,选项2,……)
semilogy(x1,y1,选项1,x2,y2,选项2,……)
loglog(x1,y1,选项1,x2,y2,选项2,……)
其中,semilogx函数x轴为常用对数刻度,y轴为线性刻度;semilogy函数x轴为线性刻度,y轴为常用对数刻度;loglog函数x轴和y轴均采用常用对数刻度。
例1 绘制1/x的直角线性坐标图和三种对数坐标图。
(2)级坐标图
polar(theta,rho,选项)
其中,theta为级角,rho为级径,选项的内容与plot函数相同。
例2 按极坐标方程绘制心型曲线。
4.3.2 统计图
(1)条形类图
①条形图
- bar函数
bar(y,style)
其中,参数y是数据,选项style用于指定分组排列模式,style分为grouped(簇状分组, 默认为簇状分组)、stacked(推积分组)。
例3 绘制分组条形图。
- bar(x,y,style)
其中,x存储横坐标,y存储纵坐标,y的行数必须与向量x的长度相同。选项style用于指定分组排列模式。
例4
②直方图
- hist函数:绘制直角坐标系下的直方图。
hist(y)
hist(y,x)
其中,y是要统计的数据,x用于指定区间的划分方式。若x是标量,则统计区间划分成x个小区间;若x是向量,则向量x中的每一个数指定分组中心值,元素的个数为数据分组数。x缺省时,默认按10个等分区进行统计。
例5 绘制服从高斯分布的直方图。
- rose函数:绘制极坐标系下的直方图。
rose(theta,x)
其中,参数theta用于确定每一区间与原点的角度,选项x用于指定区间的划分方式,x缺省时,默认按20个等分区间进行统计。
例6 绘制高斯分布数据在极坐标下的直方图。
(2)面积类图形
①扇形图
pie函数
pie(x,explode)
其中,参数x存储待统计数据,选项explode控制图块的显示模式。
例7
②面积图
area函数:方法与plot函数相同,只是将所得曲线下方区域填充颜色。
(3) 散点类图形
- scatter函数
scatter(x,y,选项,'filled')
其中,x、y用于定位数据点,选项用于指定线型、颜色、数据点标记。如果数据点标记是封闭图形,可以用选项'filled'指定填充数据点标记。该选项省略时,数据点是空心的。
例8
- stairs函数:阶梯图
- stem函数:杆图
4.3.3 矢量图形
- compass函数:罗盘图
compass(U,V) 绘制从点 (0, 0) 发射出的箭头。使用笛卡尔坐标 U
和 V
指定箭头方向,其中 U
表示 x 坐标,V
表示 y 坐标。箭头数量与 U
中的元素数相匹配。
- feather函数:羽毛图
feather(U,V)绘制以 x 轴为起点的箭头。使用笛卡尔分量 U
和 V
指定箭头方向,其中 U
表示 x 分量,V
表示 y 分量。第 n 个箭头的起始点位于 x 轴上的 n。箭头的数量与 U
和 V
中的元素数相匹配。
- quiver函数:箭头图
quiver函数调用格式:
quiver(x,y,u,v)
其中,(x,y)指定矢量起点,(u,v)指定矢量终点。x、y、u、v是同样大小的向量或同型矩阵,若省略x、y,则在x-y平面上均匀取若干个点作为起点。
例9 已知向量A、B,求A+B,并用矢量图表示。
4.4 三维曲线
4.4.1 plot3函数
(1)plot3函数的基本用法
plot3(x,y,z)
其中,参数x、y、z组成一组曲线的坐标。
例2
(2)plot3(x,y,z)函数参数的变化形式
plot(x,y,z)
- 参数X、Y、Z是同型矩阵时,以X、Y、Z对应列元素绘制曲线,曲线条数等于矩阵列数。
- 参数X、Y、Z中有向量,也有矩阵时,向量的长度与矩阵相符。
例3 在空间不同位置绘制5条正弦曲线。
法一
法二
(3)含多组输入参数的plot3函数
plot3(x1,y1,z1,x2,y2,z2,……,xn,yn,zn)
每一组x、y、z向量构成一组数据点的坐标,绘制一条曲线。
例4 绘制三条不同长度的正弦曲线。
(4)含选项的plot3函数
plot3(x,y,z,选项)
选项用于指定曲线的线型、颜色和数据点标记。
4.4.2 fplot3函数
fplot3(funx,funy,funz,tlims)
其中,funx、funy、funz代表定义曲线x、y、z坐标的函数,通常采用函数句柄的形式。tlims为参数函数自变量的取值范围,用二元向量[tmin,tmax]描述,默认为[-5,5]。
例6
在fplot3函数中,可以指定曲线的线型、颜色或数据点标记。
例如,用红色点划线绘制墨西哥帽顶曲线。
4.5 三维曲面
4.5.1 平面网格数据的生成
用矩阵X、Y分布存储每一个小矩形顶点的x坐标与y坐标,矩阵X、Y就是该矩形区域的xy平面网格坐标矩阵。
在MATLAB中,产生平面区域内的网格坐标矩阵有两种方法。
(1)利用矩阵运算生成
X和Y相同位置上的元素,如、
是区域的第三行第二列网格点的坐标(3,5)。
(2)利用meshgrid函数生成
[X,Y]=meshgrid(x,y);
其中,参数x,y是向量,存储网格点坐标的X、Y为矩阵。
第三行命令生成的网格矩阵X、Y与方法(1)相同。
若根据每一个网格点上的x、y坐标求函数值z,则得到函数值矩阵Z。矩阵X、Y、Z中的各个列向量,对应于一条曲线数据点的坐标。
例1 绘制空间曲线。
4.5.2 绘制三维曲面的函数
- mesh函数和surf函数的调用格式
mesh(x,y,z,c)
surf(x,y,z,c)
其中,x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色。c省略时,颜色的设定正比于图形的高度。
例2
-
mesh函数和surf函数的其他调用格式:
mesh(z,c)
surf(z,c)
当x、y省略时, z矩阵的第2维下标当作x轴,z矩阵的第一维下标当作y轴坐标。
- 带等高线的三维网格曲面函数meshc
- 带底座的三维网格曲面函数meshz
- 具有等高线的曲面函数surfc
- 具有光照效果的曲面函数surfl
例3
4.5.3 标准三维曲面
(1)sphere函数
[x,y,z]=sphere(n)
产生3个(n+1)阶的方阵,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。
(2)cylinder函数
[x,y,z]=cylinder(R,n)
其中,参数R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。
例4 用cylinder函数分别绘制柱面、花瓶和圆锥面。
例5 用cylinder函数绘制两个相互垂直且半径相等的圆柱面的相交图形。
(3)peaks函数
peaks函数的调用格式:
peaks(n)
peaks(V)
peaks(x,y)
peaks
4.5.4 fmesh函数和fsurf函数
用于绘制参数方程定义的曲面
fsurf(funx,funy,funz,uvlims)
fmesh(funx,funy,funz,uvlims)
其中,funx,funy,funz代表定义曲面x,y,z坐标的常数,通常采用函数句柄的形式。uvlims为funx,funy和funz的自变量取值范围,用四元向量[umin,umax,vmin,vmax]描述,默认为[-5,5.-5,5]。
例6
4.6 图形修饰处理
4.6.1 视点处理
- 方位角:视点与原点连线在xy平面上的投影与y轴负方向形成的角度,正值表示逆时针,负值表示顺时针。
- 仰角:视点与原点连线与xy平面的夹角,正值表示视点在xy平面上方,负值表示视点在xy平面下方。
(1)view函数的基本用法
view(az,e1)
其中,az为方位角,e1为仰角。系统默认的视点定义为方位角-37.5°,仰角30°。
(2)view函数的其他用法
view(x,y,z):接受三个参数,它们分别表示方位角、仰角和旋转角度。这些角度决定了你所看到的三维图形的方向和角度。
view(2):指从二维平面观察图形,,即方位角为0°,仰角为90°
view(3)
4.6.2 色彩处理
(1) 颜色的向量表示
(2)色图(Colormap)
- 色图矩阵
- 内建色图
是64行3列的矩阵
- 指定当前图形使用的色图
colormap cmapname
将当前图窗的颜色映射设置为指定的颜色映射名称,例如 'parula'
、'jet'
、'hsv'
等。可以从 MATLAB 提供的预定义颜色映射中选择一个来应用于图形中。
colormap(cmap)
将当前图窗的颜色映射设置为自己定义的颜色映射矩阵 cmap
。这意味着可以完全自定义图形中使用的颜色。
- 创建色图矩阵
色图矩阵的每一行是RGB三元组。可以自定义色图矩阵,也可以调用MATLAB提供的函数来定义色图矩阵。
例2 创建一个灰色系列色图矩阵。
(3)三维图形表面的着色
可以用shading函数来改变着色方式。
例3 使用同一色图,以不同着色方式来绘制圆锥体。
4.6.3 图形的裁剪处理
将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。
例4 绘制3/4圆。
例5 绘制3/4球面。
4.7 交互式绘图工具
略