双变量函数的可视化
要显示以下双变量函数z = f (x,y)的图像:
- 分别对函数的定义域生成含有重复行与列的X和Y矩阵。
- 用X和Y来计算函数的图像。
函数meshgrid
把由单向量或双向量x,y指定的定义域变换成矩阵X和Y,以用于计算双变量函数。X的行和Y的列分别是x和y向量的复制。
举例-sinc函数图像
此例计算并作出sinc函数sin(r)/r的在x和y方向间的图象。R是到原点的距离,出现在矩阵中心。添加eps
(在系统中返回最小值的MATLAB命令)以避免在原点处出现0/0的不定型。
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z,'EdgeColor','black')
在默认的情况下, MATLAB用通用流行的颜色对网孔进行着色 ,不过,这例子只使用单一的颜色着色网孔并且选定了EdgeColor
的表面属性。 查看surface
参考页可以看到全部的表面属性。
可以通过把原来的隐藏线显露出来建立一个透明的网孔。
hidden off
查看hidden
参考页可以得到更多的关于这个操作的信息。
例子—为表面小块着色Example - Colored Surface Plots
表面小块和网孔小块的情形是相似的,除了表面小块的矩形的外观是有色的.它的颜色是由Z和colormap(colormap
是一个颜色的顺序列表)的值所确定的 . 这些陈述用表面图来表示sinc函数的图像, 选择一种颜色, 然后添加颜色条使表示映射数据的图象得到颜色。
surf(X,Y,Z) colormap hsv colorbar
看colormap
参考页以得到颜色图的信息。
带光照的表面图
光照是一种利用方向光源照亮物体的技术。在某些情况下,这技术能使表面微妙的差异更容易的看到。光照也能用来对三维的图象增加现实感。
这例子使用同前一个例子一样的表面,但是涂上了红色并且移除了网孔线。一个发光的物体被加到了"镜头"的左边(那是你从空间观看那个表面的位置)。
增加光源和设置好照明方式到phong后,使用view
命令去改变视角,因而你从空间的另一个不同的点在观看表面(方位角-15和仰角65度). 最后, 用工具栏缩放方式放大外观。
surf(X,Y,Z,'FaceColor','red','EdgeColor','none'); camlight left; lighting phong view(-15,65)