终于迎来了这一刻,本文是Matlab绘制流线图系列函数分享文章的最后一篇。本文,将带来Matlab中,使用slice函数绘制三维体切片平面的教程。文中,主要讲解slice函数的常见用法、语法说明、沿切片的三维体数据、沿曲面的三维体数据、指定插值方法等用法。如果你对更多流线图函数感兴趣,可以查看:《Matlab流线图函数汇总》。
下面,我们首先给出Matlab中关于slice函数的帮助文档如下:
>> help slice slice Volumetric slice plot. slice(X,Y,Z,V,Sx,Sy,Sz) draws slices along the x,y,z directions at the points in the vectors Sx,Sy,Sz. The arrays X,Y,Z define the coordinates for V and must be monotonic and 3-D plaid (as if produced by MESHGRID). The color at each point will be determined by 3-D interpolation into the volume V. V must be an M-by-N-by-P volume array. slice(X,Y,Z,V,XI,YI,ZI) draws slices through the volume V along the surface defined by the arrays XI,YI,ZI. slice(V,Sx,Sy,Sz) or slice(V,XI,YI,ZI) assumes X=1:N, Y=1:M, Z=1:P. slice(...,'method') specifies the interpolation method to use. 'method' can be 'linear', 'cubic', or 'nearest'. 'linear' is the default (see INTERP3). slice(AX,...) plots into AX instead of GCA. H = slice(...) returns a vector of handles to SURFACE objects. The axes CLim property is set to span the finite values of V. Example: To visualize the function x*exp(-x^2-y^2-z^2) over the range -2 < x < 2, -2 < y < 2, -2 < z < 2, [x,y,z] = meshgrid(-2:.2:2, -2:.25:2, -2:.16:2); v = x .* exp(-x.^2 - y.^2 - z.^2); slice(x,y,z,v,[-1.2 .8 2],2,[-2 -.2])
常见用法
slice(X,Y,Z,V,xslice,yslice,zslice) slice(V,xslice,yslice,zslice) slice(___,method) slice(ax,___) s = slice(___)
语法说明
slice(X,Y,Z,V,xslice,yslice,zslice) 为三维体数据 V 绘制切片。指定 X、Y 和 Z 作为坐标数据。使用以下形式之一指定 xslice、yslice 和 zslice 作为切片位置:
- 要绘制一个或多个与特定轴正交的切片平面,请将切片参数指定为标量或向量。
- 要沿曲面绘制单个切片,请将所有切片参数指定为定义曲面的矩阵。
slice(V,xslice,yslice,zslice) 使用 V 的默认坐标数据。V 中每个元素的 (x,y,z) 位置分别基于列、行和页面索引。
slice(_,method) 指定插值方法,其中 method 可以是 ‘linear’(默认值)、’cubic’ 或 ‘nearest’。可将此选项与上述语法中的任何输入参数一起使用。
slice(ax,_) 在指定坐标区而不是当前坐标区 (gca) 中绘图。
s = slice(_) 返回创建的 Surface 对象。slice 为每个切片返回一个 Surface 对象。
沿切片的三维体数据
显示沿与每个轴正交的切片平面的三维体数据。
创建穿过 v=xe−x^2−y^2−z^2 所定义的三维体的切片平面,其中 x、y 和 z 的范围是 [-2,2]。创建在值 -1.2、0.8 和 2 处与 x 轴正交的切片平面,以及在值 0 处与 z 轴正交的切片平面。不要创建与 y 轴正交的切片平面,方法是指定空数组。
[X,Y,Z] = meshgrid(-2:.2:2); V = X.*exp(-X.^2-Y.^2-Z.^2); xslice = [-1.2,0.8,2]; yslice = []; zslice = 0; slice(X,Y,Z,V,xslice,yslice,zslice)
沿曲面的三维体数据
显示沿非平面切片的三维体数据。定义要显示三维体数据的曲面。
根据 v=xe−x^2−y^2−z^2 定义的三维体创建三维体数组 V,其中 x,y 和 z 的范围是 [-5,5]。然后,沿 z=x2−y2 定义的曲面显示三维体数据的一个切片。
[X,Y,Z] = meshgrid(-5:0.2:5); V = X.*exp(-X.^2-Y.^2-Z.^2); [xsurf,ysurf] = meshgrid(-2:0.2:2); zsurf = xsurf.^2-ysurf.^2; slice(X,Y,Z,V,xsurf,ysurf,zsurf)
指定插值方法
创建一个穿过三维体数据的切片平面。指定数据值的插值方法。
创建在值 0.8 处与 x 轴正交的切片平面。由于在 x 值 0.8 处未定义三维体数据,因此 slice 函数会对附近的值进行插值。要使用最近的数据点值,请将插值方法指定为 ‘nearest’。
[X,Y,Z] = meshgrid(-2:2); V = X.*exp(-X.^2-Y.^2-Z.^2); xslice = 0.8; yslice = []; zslice = []; slice(X,Y,Z,V,xslice,yslice,zslice,'nearest')
转载文章,原文出处:MathWorks官网,由古哥整理发布
如若转载,请注明出处:https://iymark.com/articles/2103.html