5.4.1 用颜色描述第四维
用mesh和surf等指令所绘制的图像,在未给出颜色参量的情况下,图像的颜色是沿着z轴的数据变化的。例如,surf(X,Y,Z)与surf(X,Y,Z,Z)两个指令的执行效果是相同的。将颜色施加于z轴能够产生色彩亮丽的图画,但由于z轴已经存在,因此它并不提供新的信息。
为了更好地利用颜色,可以考虑使用颜色来描述不受3个轴影响的数据的某些属性。为此,需要赋给三维作图函数的颜色参量所需要的“第四维”的数据。
如果作图函数的颜色参量是一个向量或矩阵,那么就用作颜色映像的下标。这个参量可以是任何实向量或与其参量维数相同的矩阵。
例5-33:使用颜色描述第四维示例。
创建M文件并命名为ex5_33.m,利用M文件编辑器在M文件中输入:
clear all
[X, Y, Z] = peaks(30);
R = sqrt(X .^ 2 + Y .^ 2);
subplot(1,2,1);
surf(X, Y, Z, Z);
axis tight
subplot(1,2,2)
surf(X, Y, Z, R);
axis tight
运行M文件,结果如图5-35所示。
其中,在坐标系中描述一个面需要三维数据,而另一维数据描述空间中的点的坐标值,则使用不同的颜色表现出来;在左图中,第四维数据为Z;在右图中,第四维数据为R;在图中可以看到两者的颜色分布发生了明显的变化。
图5-35 使用颜色描述第四维示例
5.4.2 其他函数
除了surf函数,mesh和pcolor函数也可以将第四维的数据附加到颜色属性上,并在图像中表现出来。各函数的句法列表如表5-15所示。
表5-15 其他函数的句法列表
除了表5-15所列出的函数,slice函数也可以通过颜色来表示存在于第四维空间中的值,其调用格式如下。
● slice(V,nx,ny,nz):显示三元函数V(X,Y,Z)确定的立体图在x轴、y轴、z轴方向上的若干点(对应若干平面)的切片图,各点的坐标由数量向量sx、sy、sz指定。其中V为大小为m×n×p的三维数组,默认值为X=1:m、Y=1:n、Z=1:p。
● slice(X,Y,Z,V,nx,ny,nz):显示三元函数V(X,Y,Z)确定的立体图在x轴、y轴、z轴方向上的若干点(对应若干平面)的切片图。若函数V(X,Y,Z)中有一个变量X取定值X0,则函数V(X0 ,Y,Z)为X=X0立体面的切面图(将该切面通过颜色表示V的值),各点的坐标由数量向量sx、sy、sz指定。参量X、Y、Z均为三维数组,用于指定立方体V的每点的三维坐标。
● slice(V,XI,YI,ZI):显示由参量矩阵XI、YI、ZI确定的立体图的切片图,参量XI、YI、ZI定义了一个曲面,同时会在曲面的点上计算立体图V的值。需要注意的是,XI、YI、ZI必须为同型矩阵。
● slice(X,Y,Z,V,XI,YI,ZI):沿着由矩阵XI、YI、ZI定义的曲面穿过立体图V的切片图。
● slice(…,'method'):通过method来指定内插值的方法,method可取linear、cubic、nearest。linear指定的内插值方法为三次线性内插值(若未指定,此即为默认值),cubic指定使用三次立方内插值法,nearest指定使用最近点内插值法。
本章小结
本章系统地阐述了将离散数据表示成可视化图形的基本过程,曲线、曲面绘制的基本技法和指令,以及特殊图形的生成和使用示例。读者在绘图时,应当根据实际情况选择合适的函数和算法,使得可视化图形的表示最合理,信息的表现最全面。例如可以使用不同线型、不同颜色、不同数据点标记来凸显不同数据的特征,还可以使用着色、灯光照明、反射效果、不同材质和透明度来处理渲染和烘托表现出高维函数的形状等。