Matlab streamtube函数创建三维流管图

4
(2)

今天,再来一篇关于Matlab 流线图系列教程。本文,我们讲解下Matlab使用streamtube函数创建三维流管图相关的教程。主要包括:streamtube函数的常见用法、语法说明、以可视方式呈现流、使用顶点数据和发散性以可视方式呈现流等用法。

Matlab streamtube函数创建三维流管图

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

>> help streamtube

 streamtube  3D stream tube.
    streamtube(X,Y,Z,U,V,W,STARTX,STARTY,STARTZ) draws stream
    tubes from vector data U,V,W. The arrays X,Y,Z define the
    coordinates for U,V,W and must be monotonic and 3D plaid (as if
    produced by MESHGRID). STARTX, STARTY, and STARTZ define the
    starting positions of the streamlines at the center of the
    tubes.  The width of the tubes is proportional to the
    normalized divergence of the vector field. A vector of surface
    handles (one per start point) is returned in H.
 
    streamtube(U,V,W,STARTX,STARTY,STARTZ) assumes
          [X Y Z] = meshgrid(1:N, 1:M, 1:P) where [M,N,P]=SIZE(U).
 
    streamtube(VERTICES,X,Y,Z,DIVERGENCE) assumes precomputed
    streamline vertices and divergence. VERTICES is cell array of
    streamline vertices (as if produced by stream3). X,Y,Z, and
    DIVERGENCE are 3D arrays
 
    streamtube(VERTICES,DIVERGENCE)  assumes
    [X Y Z] = meshgrid(1:N, 1:M, 1:P) where
    [M,N,P] = SIZE(DIVERGENCE).
 
    streamtube(VERTICES,WIDTH) uses the cell array of vectors
    WIDTH for the width of the tubes. The size of each
    corresponding element of VERTICES and WIDTH must be equal.
 
    streamtube(VERTICES,WIDTH) uses the scalar WIDTH for the
    width of all streamtubes.
 
    streamtube(VERTICES) automatically selects width.
 
    streamtube(...,[SCALE N]) scales width of the tube by SCALE.
    The default is SCALE=1. When the streamtubes are created using
    start points or divergence, SCALE=0 will suppress automatic
    scaling. N is the number of points along the circumference of
    the tube. The default is N=20.
 
    streamtube(AX,...) plots into AX instead of GCA.
 
    H = streamtube(...)  returns a vector of handles (one per start
    point) to SURFACE objects.
 
    Example 1:
       load wind
       [sx sy sz] = meshgrid(80, 20:10:50, 0:5:15);
       h=streamtube(x,y,z,u,v,w,sx,sy,sz);
       axis tight
       shading interp;
       view(3);
       camlight; lighting gouraud
 
    Example 2:
       load wind
       [sx sy sz] = meshgrid(80, 20:10:50, 0:5:15);
       verts = stream3(x,y,z,u,v,w,sx,sy,sz);
       div = divergence(x,y,z,u,v,w);
       h=streamtube(verts,x,y,z,div);
       axis tight
       shading interp;
       view(3);
       camlight; lighting gouraud
 

常见用法

streamtube(X,Y,Z,U,V,W,startx,starty,startz)
streamtube(U,V,W,startx,starty,startz)
streamtube(vertices,X,Y,Z,divergence)
streamtube(vertices,divergence)
streamtube(vertices,width)
streamtube(vertices)
streamtube(...,[scale n])
streamtube(ax,...)
h = streamtube(...)

语法说明

streamtube(X,Y,Z,U,V,W,startx,starty,startz) 从向量三维体数据 U、V 和 W 绘制流管。

数组 X、Y 和 Z 用于定义 U、V 和 W 的坐标,它们必须是单调的,无需间距均匀。X、Y 和 Z 必须具有相同数量的元素,就像由 meshgrid 生成一样。

startx、starty 和 startz 定义位于管道中心的流线图的起始位置。

管道的宽度与向量场的归一化散度成比例。

streamtube(U,V,W,startx,starty,startz) 假定 X、Y 和 Z 由以下表达式确定

[X,Y,Z] = meshgrid(1:n,1:m,1:p)

其中 [m,n,p] = size(U)。

streamtube(vertices,X,Y,Z,divergence) 使用预先计算的流线图顶点和散度。vertices 是流线图顶点的元胞数组(就像由 stream3 生成一样)。X、Y、Z 和 divergence 都是三维数组。

streamtube(vertices,divergence) 假定 X、Y 和 Z 由以下表达式确定

[X,Y,Z] = meshgrid(1:n,1:m,1:p)

其中 [m,n,p] = size(divergence)。

streamtube(vertices,width) 在向量元胞数组 width 中指定管道的宽度。vertices 和 width 的每个对应元素的大小必须相同。width 也可以是标量,用于为所有流管的宽度指定单个值。

streamtube(vertices) 自动选择宽度。

streamtube(…,[scale n]) 按照 scale 缩放管道的宽度。默认值为 scale = 1。创建流管时,使用开始点或散度、指定 scale = 0 将禁止自动缩放。n 是指沿管道的周长分布的点数。默认值为 n = 20。

streamtube(ax,…) 将图形绘制到 ax 坐标区对象中,而不是当前坐标区对象 (gca) 中。

h = streamtube(…) 返回用于绘制流管图的 surface 对象(每个起点一个)的向量。

以可视方式呈现流

使用 streamtube 函数指示 wind 数据集中的流动情况。输入包括流管的坐标、向量场分量和起始位置。

load wind
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
streamtube(x,y,z,u,v,w,sx,sy,sz);
view(3);
axis tight
shading interp;
camlight; 
lighting gouraud
Matlab streamtube函数创建三维流管图

使用顶点数据和发散性以可视方式呈现流

使用 stream3 函数返回的顶点数据和发散性数据以可视化形式呈现流。

load wind
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
verts = stream3(x,y,z,u,v,w,sx,sy,sz);
div = divergence(x,y,z,u,v,w);
streamtube(verts,x,y,z,-div);
view(3);
axis tight
shading interp
camlight 
lighting gouraud
Matlab streamtube函数创建三维流管图

共计2人评分,平均4

到目前为止还没有投票~

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

让我们改善这篇文章!

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

文章目录

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

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

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2021年03月07日 15:39
下一篇 2021年03月09日 20:21

你可能感兴趣的文章

发表回复

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