k-Wave Toolbox

kWaveTransducer

Class definition for k-Wave linear array transducer.

Syntax

transducer = kWaveTransducer(kgrid, settings)

Description

kWaveTransducer is the class definition for k-Wave transducer objects which can be substituted for the source or sensor inputs when using kspaceFirstOrder3D. For additional information, see the Defining An Ultrasound Transducer Example.

Note: This function will not work with older versions of MATLAB in which custom class definitions are not supported.

Inputs

kgrid k-Wave grid object returned by kWaveGrid
settings input structure used to define the properties of the transducer (see below)

The following parameters can be appended as fields to the settings input structure. These parameters are fixed when the transducer is initialised (they cannot be changed without re-creating the transducer). All the settings are optional and are given their default values if not defined by the user.

Property Description Default
number_elements total number of transducer elements 128
element_width width of each element in grid points 1
element_length length of each element in grid points 10
element_spacing spacing (kerf width) between the transducer elements in grid points 0
position position of the corner of the transducer within the grid in grid points [1, 1, 1]
radius radius of curvature of the transducer [m] (currently only inf is supported) inf
input_signal signal used to drive the ultrasound transducer (where the sampling rate is defined by kgrid.dt or kgrid.t_array) []

The following parameters can also be appended as fields to the settings input structure, and can additionally be modified after the transducer has been initialised.

Property Description Default
active_elements transducer elements that are currently active elements (all elements)
beamforming_delay_offset beamforming delay offset (used to force beamforming delays to be positive) 'auto'
elevation_focus_distance focus depth in the elevation direction [m] inf
focus_distance focus distance used to calculate beamforming delays [m] inf
receive_apodization receive apodization - can be set to any of the window shapes supported by getWin, or given as a vector the same length as number_elements 'Rectangular'
sound_speed sound speed used to calculate beamforming delays [m/s] 1540
steering_angle steering angle used to calculate beamforming delays [deg] 0
transmit_apodization transmit apodization - can be set to any of the window shapes supported by getWin, or given as a vector the same length as number_elements 'Rectangular'

Outputs

transducer k-Wave transducer object which can be used to replace the source or sensor inputs of kspaceFirstOrder3D

In addition to the input parameters given above (which are also accessible after the transducer has been created), the kWaveTransducer object has a number of dependent properties and methods.

Property Description
input_signal user defined input signal appended and prepended with additional zeros depending on the values of focus_distance, elevation_focus_distance, and steering_angle
mask binary mask of the active transducer elements
number_active_elements current number of active transducer elements
transducer_width total width of the transducer in grid points
 
Method Description
active_elements_mask return a binary mask of the active transducer elements (identical to mask)
all_elements_mask return a binary mask of all the transducer elements (both active and inactive)
beamforming_delays return a vector of the beam forming delays (in units of time samples) for each active element based on the focus and steering angle settings
combine_sensor_data(sensor_data) combine the sensor data returned by kspaceFirstOrder-OMP and kspaceFirstOrder-CUDA to give a single time series per active transducer element (anlogous to the output from the MATLAB code), rather than a single time series per grid point
delay_mask return a mask of the active transducer elements, where the mask values contain the beamforming delays (an integer input can also be given to control the beamforming delays used, where 1: both delays, 2: elevation only, 3: azimuth only)
elevation_beamforming_delays return a vector of the elevation beam forming delays (in units of time samples) for each active element based on the elevation focus setting
get_receive_apodization return the receive apodization
get_transmit_apodization return the transmit apodization
indexed_active_elements_mask return a mask of the active transducer elements, where the mask values indicate which transducer element each grid point corresponds to
indexed_elements_mask return a mask of all the transducer elements (both active and inactive), where the mask values indicate which transducer element each grid point corresponds to
plot plot the transducer using voxelPlot
properties print a list of the transducer properties to the command line
scan_line(sensor_data) combine the input sensor data using the current apodization and beamforming setting to generate a single scan line
transmit_apodization_mask return a mask of the active transducer elements, where the mask values contain the apodization weights

For example, running the following commands at the command line

kgrid = kWaveGrid(128, 1e-3, 128, 1e-3, 128, 1e-3);
kgrid.makeTime(1500);
settings.number_elements = 72;
settings.active_elements = zeros(72, 1);
settings.active_elements(1:16) = 1;
transducer = kWaveTransducer(kgrid, settings);
transducer.properties

will produce the following output:

k-Wave Transducer Properties
  transducer position: [1  1  1]
  transducer width: 72mm (72 grid points)
  number of elements: 72
  number of active elements: 16 (elements 1 to 16)
  element width: 1mm (1 grid points)
  element spacing (kerf): 0ym (0 grid points)
  element pitch: 1mm (1 grid points)
  element length: 20mm (20 grid points)
  sound speed: 1540m/s
  focus distance: infinite
  elevation focus distance: infinite
  steering angle: 0 degrees

Examples

See Also

kWaveGrid, kspaceFirstOrder3D