Computing the beam pattern seems to be a very useful feature. It can be used for analyzing a custom Transducer or defining default apodization schemes.
FieldII has calc_hp for this. MUST computes the beam pattern via pfield or pfield3. k-Wave would require just recording p_max(x,y,z) throughout the field rather than p(x=x0,y=y0,z=z0,t) at the transducer surface over time.
To implement this per simulator, one needs to:
Expand the existing respective function to take an input to compute echo (default) or field and select the aperture tx (default) or rx.
Make a branch (i.e. if-else or switch-case) to preserve the existing functionality
Forward the relevant arguments to the field simulator
For FieldII / MUST, that means us.scan.positions to calc_hp or pfield
For k-Wave that means sensor.record = 'p_max' and bypassing the receive aperture post-processing
Return a regular array instead of ChannelData defined on us.scan (like the beamforming functions).
Computing the beam pattern seems to be a very useful feature. It can be used for analyzing a custom
Transducer
or defining default apodization schemes.FieldII has
calc_hp
for this. MUST computes the beam pattern viapfield
orpfield3
. k-Wave would require just recordingp_max(x,y,z)
throughout the field rather thanp(x=x0,y=y0,z=z0,t)
at the transducer surface over time.To implement this per simulator, one needs to:
echo
(default) orfield
and select the aperturetx
(default) orrx
.us.scan.positions
tocalc_hp
orpfield
sensor.record = 'p_max'
and bypassing the receive aperture post-processingChannelData
defined onus.scan
(like the beamforming functions).