MATLAB Function Reference
streamslice

Draws stream lines in slice planes

Syntax

• ```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(...,'arrowmode')
streamslice(...,'method')
h = streamslice(...)
[vertices arrowvertices] = streamslice(...)
```

Description

```streamslice(X,Y,Z,U,V,W,startx,starty,startz) ``` 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 `startx`, `starty`, `startz`. `(`The section Starting Points for Stream Plots in Visualization Techniques provides more information on defining starting points.) The arrays `X`, `Y`, `Z` define the coordinates for `U`, `V`, `W` and must be monotonic and 3-D plaid (as if produced by `meshgrid`). `U`, `V`, `W` must be m-by-n-by-p volume arrays.

You should not assumed that the flow is parallel to the slice plane. For example, in a stream slice at a constant `z`, the `z` component of the vector field, `W`, is ignored when calculating the streamlines for that plane.

Stream slices are useful for determining where to start stream lines, stream tubes, and stream ribbons.

```streamslice(U,V,W,startx,starty,startz) ``` assumes `X`, `Y`, and `Z` are determined by the expression:

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

where `[m,n,p] = size(U)`.

```streamslice(X,Y,U,V) ``` draws well spaced stream lines (with direction arrows) from vector volume 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`, and `Z` are determined by the expression:

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

where `[m,n,p] = size(U)`

```streamslice(...,density) ``` modifies the automatic spacing of the stream lines. `density` must be greater than `0`. The default value is `1`; higher values produce more stream lines on each plane. For example, `2` produces approximately twice as many stream lines, while 0.5 produces approximately half as many.

```streamslice(...,'arrowsmode') ``` determines if direction arrows are present or not. `arrowmode` can be:

• `arrows` - draw direction arrows on the streamlines (default)
• `noarrows` - does not draw direction arrows

```streamslice(...,'method') ``` specifies the interpolation method to use. `method` can be:

• `linear` - linear interpolation (default)
• `cubic` - cubic interpolation
• `nearest` - nearest neighbor interpolation

See `interp3` for more information interpolation methods.

```h = streamslice(...) ``` returns a vector of handles to the line objects created.

```[vertices arrowvertices] = streamslice(...) ``` returns two cell arrays of vertices for drawing the stream lines and the arrows. You can pass these values to any of the stream line drawing functions (`streamline`, `streamribbon`, `streamtube`)

Examples

This example creates a stream slice in the `wind` data set at `z = 5`.

• ```load wind
daspect([1 1 1])
streamslice(x,y,z,u,v,w,[],[],[5])
axis tight

```

This example uses `streamslice` to calculate vertex data for the stream lines and the direction arrows. This data is then used by `streamline` to plot the lines and arrows. Slice planes illustrating with color the wind speed () are drawn by slice in the same planes.

• ```load wind
daspect([1 1 1])
[verts averts] = streamslice(u,v,w,10,10,10);
streamline([verts averts])
spd = sqrt(u.^2 + v.^2 + w.^2);
hold on;
slice(spd,10,10,10);
colormap(hot)
view(30,50); axis(volumebounds(spd));
camlight; material([.5 1 0])

```

This example superimposes contour lines on a surface and then uses `streamslice` to draw lines that indicate the gradient of the surface. `interp2` is used to find the points for the lines that lie on the surface.

• ```z = peaks;
surf(z)
hold on
[c ch] = contour3(z,20); set(ch,'edgecolor','b')
h = streamslice(-u,-v);
set(h,'color','k')
for i=1:length(h);
zi = interp2(z,get(h(i),'xdata'),get(h(i),'ydata'));
set(h(i),'zdata',zi);
end
view(30,50); axis tight

```

`contourslice`, `slice`, `streamline`, `volumebounds`