今天,带来Matlab中使用函数contourslice绘制三维体中切片平面中的等高线图方法,可以绘制平面切片图,也可以绘制曲面切片图。本文,主要讲解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 选择等高线层级。
创建 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
指定等高线层级并添加颜色栏
通过三维体数据创建多个切片平面。在每个切片平面中绘制数据值的等高线。指定要绘制等高线的层级。然后添加颜色栏。
在 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
沿曲面切片绘制等高线
通过三维体数据创建曲面切片并沿三维体数据曲面绘制等高线。指定要绘制的等高线层级的数量。
创建 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
转载文章,原文出处:MathWorks官网,由古哥整理发布
如若转载,请注明出处:https://iymark.com/articles/1482.html