利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。
参考书目:《MATLAB基础教程 (第三版) (薛山)》
之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小技巧。
在本章中的代码,会以资源的形式发在我的博客里供大家免费下载学习。
三维图形的高级控制
工科对课题的研究成果最直观的显示就是图表,图作为论文中最具冲击感的信息呈现方式,很大程度上影响了你论文的水平,对于一幅三维图形,从不同的角度看可以得到更多的信息,采用合理的颜色搭配也能更加得到审稿人的青睐。本章将介绍三维图形的高级控制,包括图形的查看方式、光照控制和图形中颜色的使用。
1 查看图形
对于三维图形,采用不同的视角可以获取不同的信息,因此选择合适的视角至关重要,以充分挖掘三维图形所蕴含的丰富信息。用户可以在图形窗口中选择视角,或通过函数和命令进行设置。本节将探讨图形的视角选择。
1.1 设置方位角和俯仰角
在MATLAB中,用户可以调整图形的显示方式,包括视点、查看对象、方向和显示范围。这些属性由一组图像属性控制,用户可以直接指定这些属性,或通过view函数进行设置,亦可使用MATLAB的默认配置。
方位角和俯仰角是视点相对于坐标原点的角度。方位角是x-y平面内的角度,正值表示逆时针方向;俯仰角则是视点相对于x-y平面的角度,正值表示位于平面上方,负值则表示位于平面下方。
方位角和俯仰角可以通过view函数指定,既可通过视点位置,也可通过设置方位角和俯仰角的数值来实现。view函数官方调用格式如下:
例:利用view函数进行视点控制
[X,Y] = meshgrid([-2:0.25:2]);
Z = X.*exp(-X.^2-Y.^2);
surf(X,Y,Z)
采用默认视角绘制图像:
采用方位角0度和俯仰角180度显示图像:
view(0,180)
在方位角-37.5度和俯仰角-30度显示图像
view(-37.5,-30)
在视点[3,3,1]处查看该图像:
view([3,3,1])
1.2 坐标轴
坐标轴通过调整尺度和范围来控制图像的形状。默认情况下,MATLAB会根据数据分布自动计算坐标轴的范围和尺度,以确保绘制的图像尽可能适应绘图区域。
(1)Stretch-to-Fill
默认情况下,MATLAB生成的坐标轴会规范化为图形窗口的大小,并略小于窗口,以便于添加边框。当窗口大小发生变化时,坐标系的大小和区域的形状因子(宽度与高度的比值)也会随之调整,以确保坐标系充满可用区域。同时,MATLAB会选择合适的坐标轴范围,以确保各个方向上的最大分辨率。
但是在一些特定的情况下,需要设置坐标轴的范围和尺寸以满足特殊需要。
例
t = 0:pi/6:4*pi;
[x,y,z] = cylinder(4+cos(t),30);
surf(x,y,z)
默认坐标系下的图像:
将该图像在等长坐标系中显示:
axis square
在等刻度坐标系中显示:
axis equal
1.3 设置绘图区形状因子的其他命令
除了通过axis、square、axis equal设置坐标系外,还有一些命令也可以设置。以下是用于设置绘图区域形状的函数:
函数 | 功能 |
daspect | 设置获取数据的范围比例因子 |
pbaspect | 设置获取绘图区域的比例因子 |
xlim | 设置获取x轴的范围 |
ylim | 设置获取y轴的范围 |
zlim | 设置获取z轴的范围 |
这里就不一一介绍了,在命令行输入“doc+相应的函数名”,就可以调取相应的函数帮助文档,查看函数的用法。
2 图像的色彩控制
颜色是图形的重要元素,丰富的颜色变化能增强图形的表现力。在MATLAB中,图形的颜色控制主要通过colormap函数实现。
MATLAB采用颜色映射表来处理图形颜色,即使用RGB色彩模型。计算机中的各种颜色是通过三原色按不同的比例调制而成的。每种颜色用一个1x3的向量[RGB]表示,其中R、G和B分别代表三种颜色的值,取值范围在[0,1]之间。MATLAB中常见的颜色配比方案如下表所示:
在设置好颜色表后,可以将其用于绘图。对于一般的曲线绘制函数,如plot和plot3,通常不需要通过颜色表来控制色彩显示;而对于曲面绘制函数,如mesh和surf,则需依赖颜色表。颜色表的设置命令为colormap([R,G,B]),其中输入变量[R,G,B]是一个三列矩阵,行数不限,该矩阵即为颜色表。
也可以使用MATLAB中预设的颜色函数,以下是一些函数的颜色表(以上面的函数举例):
使用函数 | 图像色彩 |
colormap(autumn) | ![]() |
colormap(bone) | ![]() |
colormap(cool) | ![]() |
colormap(copper) | ![]() |
colormap(flag) | ![]() |
colormap(gray) | ![]() |
colormap(hot) | ![]() |
colormap(hsv) | ![]() |
colormap(jet) | ![]() |
colormap(lines) | ![]() |
colormap(prism) | ![]() |
colormap(spring) | ![]() |
colormap(summer) | ![]() |
colormap(winter) | ![]() |
3 光照控制
给图像添加光影,以上面图像为例:
函数 | 说明 |
camlight | 创建或移动光源,位置为与摄像机之间的相对位置 |
lightangle | 在球面坐标系中创建或者放置光源 |
light | 创建光照对象 |
lighting | 选择照明方案 |
material | 设置反射系数属性 |
以上面的图像举例
再加一个这样的代码
camlight('headlight')
你就可以得到这样的图像: