切片图

切片图显示穿过三维体积内的一个截面,这个截面可以是二维横切片、纵切片、任意方向的切片,也可以是一个曲面。切片图在工程中有着广泛的应用。比如,在地质上,如果某个切片在地质构造、工程选址布线等方面有着重要意义,往往要把这个切片单独绘出来进行研究。多个连续且有一定间隔的二维切片也能反映三维总体的信息。[大谦MATLAB,dqmatlab点com]

用slice函数绘切片图,其调用格式为:

slice(V,sx,sy,sz) 绘体积V中向量sx,sy和sz指定的点上沿x, y和z方向的切片。V是一个m×n×p的体积数组,包含默认位置X=1:n, Y=1:m, Z =1:p处的数据点。向量sx,sy和sz中的每个元素定义切片在x, y和z方向上的分量。

slice(X,Y,Z,V,sx,sy,sz) 绘体积V的切片图。X,Y和Z为三维数组,指定V的坐标。X, Y和Z必须位于各向同性的正交空间中。

slice(V,XI,YI,ZI) 在体积V中绘数据切片图,该切片由XI,YI和ZI定义。XI,YI和ZI为矩阵,定义一个曲面,体积在曲面点上计算。XI, YI和ZI必须大小相同。

slice(X,Y,Z,V,XI,YI,ZI) 沿数组XI, YI和ZI定义的曲面绘穿过体积V的切片。

slice(...,'method') 指定内插方法。'method'可以是'linear','cubic'或'nearest'。

linear 指定为线性插值(默认选项)。

cubic 指定为三次插值。

nearest 指定为最近邻插值法。

h=slice(...) 返回曲面图形对象的句柄向量。

在区间-2≤x≤2, -2≤y≤2, -2≤z≤2上绘下面函数的图形:

code.matlab
>> [x,y,z]=meshgrid(-2:.2:2);
>> v=x.^2+2*y.^2-3*z.^2;  %用函数计算各点处的v值
>> xslice=[-2,0,2]; yslice=2; zslice=[-2,0];  %各方向上的切片位置
>> slice(x,y,z,v,xslice,yslice,zslice)  %切片
>> colormap hsv

生成图5-1。此类图形由于涉及到4个变量,常常称为4维图。

Document Image
\[\]

图5-1 切片图

在切片上绘制等值线图,称为切片等值线图。用contourslice函数绘切片等值线图。调用格式为:

contourslice(X,Y,Z,V,Sx,Sy,Sz) 在与x轴、y轴和z轴平行的面板中,在向量Sx, Sy和Sz所表示的点上绘等值线。数组X, Y和Z定义体积V的坐标。每条等值线的颜色由体积V确定,它必须是一个m×n×p的体积数组。

contourslice(X,Y,Z,V,Xi,Yi,Zi) 沿数组Xi, Yi, Zi定义的曲面绘穿过体积V的等值线。

contourslice(V,Sx,Sy,Sz)和contourslice(V,Xi,Yi,Zi) (忽略X, Y和Z变量) 假设[X,Y,Z]=meshgrid(1:n,1:m,1:p) 其中 [m,n,p]= size(v)。

contourslice(...,n) 在每个面板中绘n条等值线,覆盖自动设置的值。

contourslice(...,cvals) 在每个面板中由向量cvals指定的位置上绘length(cval)条等值线。

contourslice(...,[cv cv]) 在水平cv上计算每个面板中的单条等值线。

contourslice(...,'method') 指定将要使用的内插方法。内插方法可以是linear, cubic或nearest。nearest 是默认方法。

h=contourslice(...) 返回用于实现等值线的patch对象的句柄向量。

本例使用例1-11的数据绘制切片等值线图。

code.matlab
>> [x,y,z]=meshgrid(-2:.2:2);
>> v=x.^2+2*y.^2-3*z.^2;  %用函数计算各点处的v值
>> xslice=[-2,2]; yslice=2; zslice=[-2];  %各方向上的切片位置
>> contourslice(x,y,z,v,xslice,yslice,zslice)  %切片等值线
>> colormap hsv
>> view(3)

生成图5-2。

Document Image
\[\]

图5-2 切片等值线图