k-Wave Toolbox

makeMultiBowl

Create a binary map of multiple bowls within a 3D grid.

Syntax

[bowls, bowl_labelled] = makeBowl(grid_size, bowl_pos, radius, diameter, focus_pos)
[bowls, bowl_labelled] = makeBowl(grid_size, bowl_pos, radius, diameter, focus_pos, ...)

Description

makeMultiBowl creates a binary map of multiple bowls within a three-dimensional grid using makeBowl. The position of the bowls is denoted by 1's in the the matrix with 0's elsewhere. A labelled matrix can also be returned, where the position of the first bowl is denoted by 1's, the position of the second bowl by 2's, and so on.

Examples

% define grid parameters
x_size              = 300e-3;
Nx                  = 256;
dx                  = x_size / Nx;
grid_size           = [Nx, Nx, Nx];

% create a Cartesian sphere with the x, y, z positions of the bowls
sphere_radius       = 125e-3;
num_bowls           = 64;
bowl_pos            = makeCartSphere(sphere_radius, num_bowls, [1, 1, 1] * x_size / 2).';

% convert the Cartesian bowl positions to grid points
bowl_pos            = round(bowl_pos/dx);

% define element parameters
radius              = round(x_size / (2 * dx));
diameter            = 21;
focus_pos           = [1, 1, 1] * Nx/2;

% create bowls
makeMultiBowl(grid_size, bowl_pos, radius, diameter, focus_pos, 'Plot', true);

Inputs

grid_size size of the 3D grid given as a three element vector [Nx, Ny, Nz] [grid points]
bowl_pos centre of the rear surface of each bowl given as matrix of dimensions N x 3, with each row specifying the centre for each bowl as a three element vector [bx, by, bz] [grid points]
radius radius of curvature of each bowl given as either a single number (if the bowls have the same radius), or an N-element vector containing the radius for each bowl [grid points]
diameter aperture diameter of each bowl given as either a single number (if the bowls have the same diameter), or an N-element vector containing the diameter for each bowl [grid points]
focus_pos any point on the beam axis of the bowl given as either a three element vector (if the bowls have the same focus_pos), or as a matrix of dimensions N x 3, with each row specifying the focus_pos for each bowl given as a three element vector [fx, fy, fz] [grid points]

Optional Inputs

Optional 'string', value pairs that may be used to modify the default computational settings.

Input Valid Settings Default Description
'Binary' (Boolean scalar) false Boolean controlling whether the bowl map is returned as a double precision matrix (false) or a logical matrix (true).
'Plot' (Boolean scalar) false Boolean controlling whether the bowl array is plotted using voxelPlot.
'RemoveOverlap' (Boolean scalar) false Boolean controlling whether overlapped grid points within each bowl (not between bowls) are removed.

Outputs

bowls 3D binary map of a bowls
bowls_labelled 3D labelled matrix of bowls

See Also

makeBowl, makeMultiArc