Matlab使用slice函数绘制三维体切片平面

4
(2)

终于迎来了这一刻,本文是Matlab绘制流线图系列函数分享文章的最后一篇。本文,将带来Matlab中,使用slice函数绘制三维体切片平面的教程。文中,主要讲解slice函数的常见用法、语法说明、沿切片的三维体数据、沿曲面的三维体数据、指定插值方法等用法。如果你对更多流线图函数感兴趣,可以查看:《Matlab流线图函数汇总》。

Matlab使用slice函数绘制三维体切片平面

下面,我们首先给出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=xex^2−y^2−z^2 所定义的三维体的切片平面,其中 xy 和 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)
Matlab使用slice函数绘制三维体切片平面

沿曲面的三维体数据

显示沿非平面切片的三维体数据。定义要显示三维体数据的曲面。

根据 v=xex^2−y^2−z^2 定义的三维体创建三维体数组 V,其中 xy 和 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)
Matlab使用slice函数绘制三维体切片平面

指定插值方法

创建一个穿过三维体数据的切片平面。指定数据值的插值方法。

创建在值 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')
Matlab使用slice函数绘制三维体切片平面

共计2人评分,平均4

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

本文来自转载,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/program/matlab-function-slice.html

发表评论

登录后才能评论
本站APP
本站APP
分享本页
返回顶部