We have made available an alpha-version of a new transducer class for k-Wave called kWaveArray
. This is based on the staircase-free source definition discussed in this paper. This requires k-Wave 1.3 to run.
The main class is called kWaveArray
. This supports several different types of elements (circular, focused, rectangular) which can be any size (in physical space) and placed anywhere in the grid (not constrained to the grid points). The class takes care of applying weighted source signals to each grid point that forms part of each element in the physical array (when used as a source) and combining the source signals from each grid point to give one sensor signal per physical element of the array (when used as a sensor). See help kWaveArray
to get started.
Note, currently, the kWaveArray
class does not have full integration with the k-Wave simulation functions. This means that helper methods must be used to turn the kWaveArray
into conventional k-Wave source inputs, and to combine the output sensor data. One downside is that the source and sensor masks can become very large. It can also take some time to generate the source inputs. We are working on both of these issues by integrating kWaveArray
more directly with the simulation functions so that only one driving signal (source) or received signal (sensor) needs to be stored per element, and the scaling and averaging is down within the time loop.
Several examples of how to use kWaveArray
are given in the examples folder. Note, as these are alpha codes, syntax and functionality may change, and won't necessarily be backwards compatible.
The codes are currently in alpha 0.1, and we welcome any feedback (particularly from users who are already familiar with k-Wave). Please post comments and questions specific to kWaveArray
to this thread.
Brad.
--------
UPDATE: 1 November 2020 - Download link updated to alpha 0.2.
Bug fix in addRectElement
and new example of a linear array.
--------
UPDATE: 8 June 2021 - Download link updated to alpha 0.3.
Added support for annular arrays.
--------
UPDATE: 8 November 2022 - kWaveArray
is now part of k-Wave V1.4. Removed download link to alpha version.
--------
KNOWN ISSUES:
Setting the transducer position using setAffineTransform
or setArrayPosition
when using a transducer with rectangular elements does not currently rotate the angle of the individual elements. As a work around, set the element angle in addRectElement
to the same angle as the array rotation (see example).