1网格图和曲面图
MATLAB 在 x-y 平面中的网格上方使用点的 z 坐标来定义曲面图,并使用直线连接相邻的点。mesh 和surf
函数以三维形式显示曲面图。
• mesh
生成仅使用颜色来标记连接定义点的线条的线框曲面图。
• surf
使用颜色显示曲面图的连接线和面。
MATLAB 通过将索引的 z 数据值映射到图窗颜色图来标记曲面图颜色。
例如,想要要显示包含两个变量的函数 z = f (x,y),步骤如下:
1 在此函数的域中,生成分别由重复行和重复列组成的
X
和
Y
矩阵。
2 使用
X
和
Y
计算此函数并绘制其图形。
meshgrid 函数将一个向量或两个向量(即
x
和
y
)指定的域转换为矩阵
X
和
Y,以便用于计算包含两个变量的函数。
X
的行是向量
x
的副本,
Y
的列是向量
y
的副本。
1.1普通网格图
此示例说明如何计算和绘制 x 和 y 方向之间的二维
sinc 函数 sin(R)/R。R 是距原点的距离,原点在矩阵的中心。添加
eps(非常小的值)可防止网格图在 R
= 0 处的点出现孔洞。
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
默认情况下,MATLAB® 使用当前颜色图来标记网格图颜色。
1.2彩色曲面图
此示例说明如何将 sinc 函数绘制为曲面图,指定颜色图并添加颜色栏以便显示数据与颜色的映射。曲面图与网格图相似,但曲面图的矩形面是彩色的。各个面的颜色由
Z 的值及颜色图(即颜色的有序列表)决定。
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
colorbar
1.3将曲面图设置为透明
此示例展示如何将曲面图的面设置为不同透明度。透明度(称为 alpha 值)可以针对整个对象进行指定,也可以基于
alphamap
(其作用方式与颜色图类似)进行指定。
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
alpha(.4)
MATLAB® 显示一个面 alpha 值为 0.4 的曲面。Alpha 值的范围介于 0(完全透明)和 1(不透明)之间。
1.4使用灯光照亮曲面图
本示例展示的曲面图与前面示例所用的曲面图相同,但将其设置为红色,并删除了网格线。然后会在“相机”(相机即为您观察曲面图所处的空间位置)左侧添加一个灯光对象:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z,'FaceColor','red','EdgeColor','none')
camlight left;
lighting phong
光照是使用定向光源照亮对象的技术。在特定情况下,此技术能够更清楚地显示曲面图形状的细微差异。光照还可用于增添三维图形的真实感。
1.5拖动曲面图
图窗工具栏和相机工具栏提供了以交互方式浏览三维图形的方法。下图显示选择了
三维旋转
工具的两个工具栏。
2显示图像
2.1图像数据
您可以将二维数值数组显示为图像。在图像中,数组元素决定了图像的亮度或颜色。例如,加载一个图像数组及其颜色图:
load durer
whos
Name Size Bytes Class
X 648x509 2638656 double array
caption 2x28 112 char array
map 128x3 3072 double array
加载文件 durer.mat
,向工作区添加三个变量。数组
X
是一个 648×509 矩阵,
map 是作为此图像的颜 色图的 128×3 数组。
MAT 文件(例如
durer.mat)是用于提供保存 MATLAB 变量的方法的二进制文件。 X
的元素是介于 1 和 128 之间的整数,用作颜色图
map
的索引。要显示图像,请使用
imshow
函数:
imshow(X,map)
重新生成阿尔布雷特•丢勒的蚀刻板画。
2.2读取和写入图像
使用 imread
函数可以读取标准图像文件(TIFF、JPEG、PNG 等)。
imread 返回的数据类型取决于读取的图像类型。
使用 imwrite 函数可以将 MATLAB 数据写入到各种标准图像格式。