上一篇关于Matlab函数的文章中,我们讲述了《Matlab streamline将向量绘制为流线图》。本文,我们将继续讲解Matlab中的流线图函数:Matlab中使用streamslice函数在切片平面中绘制流线图的相关教程。文中,我们主要给出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
转载文章,原文出处:MathWorks官网,由古哥整理发布
如若转载,请注明出处:https://iymark.com/articles/1915.html