MATLAB Function Reference |

**Syntax**

slice(V,sx,sy,sz) slice(X,Y,Z,V,sx,sy,sz) slice(V,XI,YI,ZI) slice(X,Y,Z,V,XI,YI,ZI) slice(...,'

') h = slice(...)*method*

**Description**

`slice`

displays orthogonal slice planes through volumetric data.

```
slice(V,sx,sy,sz)
```

draws slices along the x, y, z directions in the volume `V`

at the points in the vectors `sx`

, `sy`

, and `sz`

. `V`

is an *m*-by-*n*-by-*p* volume array containing data values at the default location `X = 1:n,`

`Y = 1:m,`

`Z =`

`1:p`

. Each element in the vectors `sx`

, `sy`

, and `sz`

defines a slice plane in the *x*-, *y*-, or *z*-axis direction.

```
slice(X,Y,Z,V,sx,sy,sz)
```

draws slices of the volume `V`

. `X`

, `Y`

, and `Z`

are three-dimensional arrays specifying the coordinates for `V`

. `X`

, `Y`

, and `Z`

must be monotonic and orthogonally spaced (as if produced by the function `meshgrid`

). The color at each point is determined by 3-D interpolation into the volume `V`

.

```
slice(V,XI,YI,ZI)
```

draws data in the volume `V`

for the slices defined by `XI`

, `YI`

, and `ZI`

. `XI`

, `YI`

, and `ZI`

are matrices that define a surface, and the volume is evaluated at the surface points. `XI`

, `YI`

, and `ZI`

must all be the same size.

```
slice(X,Y,Z,V,XI,YI,ZI)
```

draws slices through the volume `V`

along the surface defined by the arrays `XI`

, `YI`

, `ZI`

.

`slice(...,'`

specifies the interpolation method.

')
*method*`'`

*method*`'`

is `'linear'`

, `'cubic'`

, or `'nearest'`

.

`linear`

specifies trilinear interpolation (the default).`cubic`

specifies tricubic interpolation.`nearest`

specifies nearest neighbor interpolation.

```
h = slice(...)
```

returns a vector of handles to surface graphics objects.

**Remarks**

The color drawn at each point is determined by interpolation into the volume `V`

.

**Examples**

over the range -2 *x* 2, -2 *y* 2, - 2 z 2:

[x,y,z] =

`meshgrid`

(-2:.2:2,-2:.25:2,-2:.16:2); v = x.`*`

exp(-x.^2-y.^2-z.^2); xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];`slice`

(x,y,z,v,xslice,yslice,zslice) colormap hsv

**Slicing At Arbitrary Angles**

You can also create slices that are oriented in arbitrary planes. To do this,

- Create a slice surface in the domain of the volume (
`surf`

,`linspace`

). - Orient this surface with respect the the axes (
`rotate`

). - Get the
`XData`

,`YData`

, and`ZData`

of the surface (`get`

). - Use this data to draw the slice plane within the volume.

For example, these statements slice the volume in the first example with a rotated plane. Placing these commands within a for loop "passes" the plane through the volume along the z-axis.

for i = -2:.5:2 hsp = surf(linspace(-2,2,20),linspace(-2,2,20),zeros(20)+i); rotate(hsp,[1,-1,1],30) xd = get(hsp,'XData'); yd = get(hsp,'YData'); zd = get(hsp,'ZData'); delete(hsp) slice(x,y,z,v,[-2,2],2,-2) % Draw some volume boundaries hold on slice(x,y,z,v,xd,yd,zd) hold off axis tight view(-5,10) drawnow end

The following picture illustrates three positions of the same slice surface as it passes through the volume.

**Slicing with a Nonplanar Surface**

You can slice the volume with any surface. This example probes the volume created in the previous example by passing a spherical slice surface through the volume.

[xsp,ysp,zsp] = sphere; slice(x,y,z,v,[-2,2],2,-2) % Draw some volume boundaries for i = -3:.2:3 hsp = surface(xsp+i,ysp,zsp); rotate(hsp,[1 0 0],90) xd = get(hsp,'XData'); yd = get(hsp,'YData'); zd = get(hsp,'ZData'); delete(hsp) hold on hslicer = slice(x,y,z,v,xd,yd,zd); axis tight xlim([-3,3]) view(-10,35) drawnow delete(hslicer) hold off end

The following picture illustrates three positions of the spherical slice surface as it passes through the volume.

**See Also**

Volume Visualization for related functions

Exploring Volumes with Slice Planes for more examples.

size (serial) | smooth3 |