This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


Extract subset of volume data set


[Nx,Ny,Nz,Nv] = subvolume(X,Y,Z,V,limits)
[Nx,Ny,Nz,Nv] = subvolume(V,limits)
Nv = subvolume(...)


[Nx,Ny,Nz,Nv] = subvolume(X,Y,Z,V,limits) extracts a subset of the volume data set V using the specified axis-aligned limits. limits = [xmin,xmax,ymin, ymax,zmin,zmax] (Any NaNs in the limits indicate that the volume should not be cropped along that axis.)

The arrays X, Y, and Z define the coordinates for the volume V. The subvolume is returned in NV and the coordinates of the subvolume are given in NX, NY, and NZ.

[Nx,Ny,Nz,Nv] = subvolume(V,limits) assumes the arrays X, Y, and Z are defined as

[X,Y,Z] = meshgrid(1:N,1:M,1:P) 

where [M,N,P] = size(V).

Nv = subvolume(...) returns only the subvolume.


This example uses a data set that is a collection of MRI slices of a human skull. The data is processed in a variety of ways:

  • The 4-D array is squeezed (squeeze) into three dimensions and then a subset of the data is extracted (subvolume).

  • The outline of the skull is an isosurface generated as a patch (p1) whose vertex normals are recalculated to improve the appearance when lighting is applied (patch, isosurface, isonormals).

  • A second patch (p2) with interpolated face color draws the end caps (FaceColor, isocaps).

  • The view of the object is set (view, axis, daspect).

  • A 100-element grayscale colormap provides coloring for the end caps (colormap).

  • Adding lights to the right and left of the camera illuminates the object (camlight, lighting).

    load mri
    D = squeeze(D);
    [x,y,z,D] = subvolume(D,[60,80,nan,80,nan,nan]);
    p1 = patch(isosurface(x,y,z,D, 5),...
    p2 = patch(isocaps(x,y,z,D, 5),...
    view(3); axis tight; daspect([1,1,.4])
    camlight right; camlight left; lighting gouraud

Introduced before R2006a

Was this topic helpful?