Matlab三维切平面等高线图contourslice

4.5
(4)

今天,带来Matlab中使用函数contourslice绘制三维体中切片平面中的等高线图方法,可以绘制平面切片图,也可以绘制曲面切片图。本文,主要讲解contourslice函数的常见用法、语法说明、绘制单个切片的等高线、在切片平面中绘制等高线、指定等高线层级并添加颜色栏以及沿曲面切片绘制等高线等。

Matlab三维切平面等高线图contourslice

下面,我们首先给出Matlab中关于contourslice函数的帮助文档如下:

>> help contourslice
 contourslice  Contours in slice planes.
    contourslice(X, Y, Z, V, Sx, Sy, Sz) draws contours in axis aligned x, y, z
    planes 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 contour will be determined
    by the volume V.  V must be an M-by-N-by-P volume array.
 
    contourslice(X, Y, Z, V, XI, YI, ZI) draws contours through the volume V
    along the surface defined by the arrays XI, YI, ZI.
 
    contourslice(V, Sx, Sy, Sz) or contourslice(V, XI, YI, ZI) assumes
    [X, Y, Z] = meshgrid(1 : N, 1 : M, 1 : P) where [M, N, P] = SIZE(V).
 
    contourslice(..., N) draw N contour lines per plane, overriding the
    automatic value.
 
    contourslice(..., CVALS) draws LENGTH(CVALS) contour lines per plane
    at the values specified in vector CVALS.
 
    contourslice(..., [cv, cv]) computes a single contour per plane at the
    level cv.
 
    contourslice(..., 'method') specifies the interpolation method to use.
    'method' can be 'linear', 'cubic', or 'nearest'.  'nearest' is the
    default except when the contours are being drawn along the
    surface defined XI, YI, ZI when 'linear' is the default (see INTERP3).
 
    contourslice(AX, ...) plots into AX instead of GCA.
 
    H = contourslice(...) returns a vector of handles to PATCH
    objects in H.
 
    Example:
      [X,Y,Z,V] = flow;
      Sx = 1:9;
      Sy = [];
      Sz = 0;
      cvals = linspace(-8,2,10);
      figure
      contourslice(X,Y,Z,V,Sx,Sy,Sz,cvals)
      axis([0,10,-3,3,-3,3])
      daspect([1,1,1])
      campos([0,-20,7])
      box on

常见用法

contourslice(X,Y,Z,V,xslice,yslice,zslice)
contourslice(V,xslice,yslice,zslice)
contourslice(___,num)
contourslice(___,lvls)
contourslice(___,method)
contourslice(ax,___)
s = contourslice(___)

语法说明

contourslice(X,Y,Z,V,xslice,yslice,zslice) 在三维体数据 V 的切片中绘制等高线,其中 V 决定等高线的颜色。指定 X、Y 和 Z 作为坐标数据。使用以下形式之一指定 xslice、yslice 和 zslice 作为切片位置:

  • 要绘制一个或多个与特定轴正交的切片平面,请将切片参数指定为标量或向量。
  • 要沿曲面绘制单个切片,请将所有切片参数指定为定义曲面的矩阵。

contourslice(V,xslice,yslice,zslice) 使用 V 的默认坐标数据。V 中每个元素的 (x,y,z) 位置分别基于列、行和页面索引。

contourslice(___,num) 指定每个切片要绘制的等高线数量。此选项可与先前语法中的任何输入参数一起使用。

contourslice(___,lvls) 指定每个切片内要绘制等高线的位置处的值。

contourslice(___,method) 指定插值方法,其中 method 可以是 ‘linear’、’cubic’ 或 ‘nearest’。

contourslice(ax,___) 在指定坐标区而不是当前坐标区 (gca) 中绘图。

s = contourslice(___) 返回创建的 Patch 对象。

绘制单个切片的等高线

通过三维体数据创建单个切片平面并绘制数据值的等高线。

根据 flow 数据集创建矩阵 X、Y、Z 和 V。在 z = 0 的切片平面中绘制 V 的等高线。

[X,Y,Z,V] = flow;
zslice = 0;
contourslice(X,Y,Z,V,[],[],zslice)
grid on
Matlab三维切平面等高线图contourslice

在切片平面中绘制等高线

通过三维体数据创建多个切片平面。在每个切片平面中绘制数据值的等高线。由 MATLAB 选择等高线层级。

创建 V 作为由 v=xe−x2−y2−z2 定义的三维体数据的数组。在 x 轴上 -1.2、0.8 和 2 值处与轴正交的三个切片平面中绘制等高线。通过指定空数组,不创建任何与 y 轴或 z 轴正交的切片平面。将坐标区视图更改为三维视图并添加网格线。

[X,Y,Z] = meshgrid(-2:.2:2);
V = X.*exp(-X.^2-Y.^2-Z.^2);

xslice = [-1.2,0.8,2];   
yslice = [];
zslice = [];
contourslice(X,Y,Z,V,xslice,yslice,zslice)
view(3)
grid on
Matlab三维切平面等高线图contourslice

指定等高线层级并添加颜色栏

通过三维体数据创建多个切片平面。在每个切片平面中绘制数据值的等高线。指定要绘制等高线的层级。然后添加颜色栏。

x 轴上 -1.2、0.8 和 2 值处与轴正交的三个切片平面中绘制等高线。在值 -0.2 到 0.4 之间,以 0.01 为间距绘制三维体数据的等高线。添加颜色栏以查看数据值如何映射到等高线颜色。此外,将坐标区视图更改为三维视图并添加网格线。

[X,Y,Z] = meshgrid(-2:.2:2);
V = X.*exp(-X.^2-Y.^2-Z.^2);
xslice = [-1.2,0.8,2];   
lvls = -0.2:0.01:0.4;

contourslice(X,Y,Z,V,xslice,[],[],lvls)
colorbar
view(3)
grid on
Matlab三维切平面等高线图contourslice

沿曲面切片绘制等高线

通过三维体数据创建曲面切片并沿三维体数据曲面绘制等高线。指定要绘制的等高线层级的数量。

创建 V 作为由 v=xe−x2−y2−z2 定义的三维体数据的数组。然后,沿 z=x2−y2 定义的曲面显示三维体数据的一个切片。沿曲面绘制 20 条等高线。将坐标区视图更改为三维视图并添加网格线。

[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;
contourslice(X,Y,Z,V,xsurf,ysurf,zsurf,20)
view(3)
grid on
Matlab三维切平面等高线图contourslice

共计4人评分,平均4.5

到目前为止还没有投票~

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

让我们改善这篇文章!

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

文章目录

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

如若转载,请注明出处:https://iymark.com/articles/1482.html

(2)
微信公众号
古哥的头像古哥管理团队
上一篇 2021年01月17日 21:14
下一篇 2021年01月19日 22:40

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号