Matlab streamslice切片平面流线图函数

4.3
(3)

上一篇关于Matlab函数的文章中,我们讲述了《Matlab streamline将向量绘制为流线图》。本文,我们将继续讲解Matlab中的流线图函数:Matlab中使用streamslice函数在切片平面中绘制流线图的相关教程。文中,我们主要给出streamslice函数的常见用法、语法说明、在切片平面中绘制流线图灯用法。

Matlab streamslice切片平面流线图函数

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

>> help streamslice
 streamslice  Streamlines in slice planes.
    streamslice(X,Y,Z,U,V,W,Sx,Sy,Sz) draws well spaced streamlines
    (with direction arrows) from vector data U,V,W 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 U,V,W and must be monotonic
    and 3D plaid (as if produced by MESHGRID).  V must be an
    M-by-N-by-P volume array. It should not be assumed that the
    flow is parallel to the slice plane; for example, in a
    streamslice at a constant z, the z component of the vector
    field, W, is ignored when calculating the streamlines for that
    plane. Streamslices are useful for determining where to start
    streamlines, streamtubes, and streamribbons.
 
    streamslice(U,V,W,Sx,Sy,Sz) assumes
        [X Y Z] = meshgrid(1:N, 1:M, 1:P) where [M,N,P]=SIZE(V).
 
    streamslice(X,Y,U,V)  draws well spaced streamlines (with
    direction arrows) from vector data U,V. The arrays X,Y define
    the coordinates for U,V and must be monotonic and 2-D plaid (as
    if produced by MESHGRID).
 
    streamslice(U,V) assumes
        [X Y] = meshgrid(1:N, 1:M) where [M,N]=SIZE(V).
 
    streamslice(..., DENSITY) modifies the automatic spacing of the
    streamlines. DENSITY must be greater than 0. The default value
    is 1; higher values will produce more streamlines on each
    plane. For example, 2 will produce approximately twice as many
    streamlines while 0.5 will produce approximately half as many.
 
    streamslice(...,'arrows'), (the default) draws direction
    arrows. streamslice(...,'noarrows') suppresses drawing the
    direction arrows.
 
    streamslice(...,'method') specifies the interpolation method to
    use. 'method' can be 'linear', 'cubic', or 'nearest'.  'linear'
    is the default (see INTERP3).
 
    streamslice(AX,...) plots into AX instead of GCA.
 
    H = streamslice(...) returns a vector of handles to LINE
    objects.
 
    [VERTICES ARROWVERTICES] = streamslice(...) returns 2 cell
    arrays of vertices for drawing the streamlines and the
    arrows.  These can be passed to any streamline drawing function
    (streamline) to draw the plot.
 
    Example 1:
       load wind
       streamslice(x,y,z,u,v,w,[],[],[5]);
 
    Example 2:
       load wind
       [verts averts] = streamslice(u,v,w,10,10,10);
       streamline([verts averts]);
       spd = sqrt(u.*u + v.*v + w.*w);
       hold on; slice(spd,10,10,10);
       colormap(hot)
       shading interp
       view(30,50); axis(volumebounds(spd));
       camlight; material([.5 1 0])
 
    Example 3:
       z = peaks;
       surf(z); hold on
       shading interp;
       [c ch] = contour3(z,20); 
       ch.EdgeColor = 'b';
       [u v] = gradient(z);
       h = streamslice(-u,-v);  % downhill
       set(h,'Color','k');
       for i=1:length(h);
         zi = interp2(z,h(i).XData, h(i).YData);
         h(i).ZData = zi;
       end
       view(30,50); axis tight

常见用法

streamslice(X,Y,Z,U,V,W,startx,starty,startz)
streamslice(U,V,W,startx,starty,startz)
streamslice(X,Y,U,V)
streamslice(U,V)
streamslice(...,density)
streamslice(...,'arrowsmode')
streamslice(...,'method')
streamslice(axes_handle,...)
h = streamslice(...)
[vertices arrowvertices] = streamslice(...)

语法说明

streamslice(X,Y,Z,U,V,W,startx,starty,startz) 在与轴对齐的 x、y、z 平面中根据向量数据 U、V、W 绘制间隔合适的流线图(具有方向箭头),流线图以向量 startx、starty、startz 中的点为起始点。

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

不要假定流动情况与切片平面平行。例如,在常量值 z 位置的流切片中,当计算该平面的流线图时,向量场 W 的 z 分量将被忽略。

流切片可用于确定开始绘制流线图、流管和流带的位置。

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

[X,Y,Z] = meshgrid(1:n,1:m,1:p)
其中 [m,n,p] = size(U)。

streamslice(X,Y,U,V) 根据向量三维体数据 U、V 绘制间距合适的流线图(带方向箭头)。

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

streamslice(U,V) 假定 X、Y 和 Z 由以下表达式确定

[X,Y,Z] = meshgrid(1:n,1:m,1:p)
其中 [m,n,p] = size(U)。

streamslice(…,density) 修改流线图的自动间距设置。density 必须大于 0。默认值是 1;值越大在每个平面上生成的流线图越多。例如,2 生成大约两倍的流线图,而 0.5 生成大约一半的流线图。

streamslice(…,’arrowsmode’) 确定是否具有方向箭头。arrowmode 可以是

arrows – 在流线图上绘制指向箭头(默认值)。

noarrows – 不绘制指向箭头。

streamslice(…,’method’) 指定要使用的插值方法。method 可以是

linear – 线性插值(默认值)

cubic – 三次插值

nearest – 最近邻点插值

有关插值方法的详细信息,请参阅 interp3。

streamslice(axes_handle,…) 将图形绘制到句柄为 axes_handle 的坐标区对象中,而不是当前坐标区对象 (gca) 中。

h = streamslice(…) 返回所创建的线条对象的句柄向量。

[vertices arrowvertices] = streamslice(…) 返回用于绘制流线图和箭头的两个顶点元胞数组。您可以将这些值传递给任何流线图绘制函数(streamline、streamribbon、streamtube)。

在切片平面中绘制流线图

加载 wind 数据集,这会加载三维数组 u、v、w、x、y 和 z。绘制沿 z = 5 的切片平面的流线图。

load wind
streamslice(x,y,z,u,v,w,[],[],5)
axis tight
Matlab streamslice切片平面流线图函数

共计3人评分,平均4.3

到目前为止还没有投票~

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

让我们改善这篇文章!

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

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

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

发表评论

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