k-Wave Toolbox

angularSpectrumCW

Project CW input plane using the angular spectrum method.

Syntax

pressure = angularSpectrumCW(input_plane, dx, z_pos, f0, c0)
pressure = angularSpectrumCW(input_plane, dx, z_pos, f0, c0, ...)
pressure = angularSpectrumCW(input_plane, dx, z_pos, f0, medium)
pressure = angularSpectrumCW(input_plane, dx, z_pos, f0, medium, ...)

Description

angularSpectrumCW projects an input plane of single-frequency continuous wave data (given as a 2D matrix of complex pressure values) to the parallel plane or planes specified by z_pos using the angular spectrum method. The implementation follows the spectral propagator with angular restriction described in reference [1].

For linear projections in a lossless medium, just the sound speed can be specified. For projections in a lossy medium, the parameters are given as fields to the input structure medium.

To compute the pressure field over an isotropic domain with Nz grid points (assuming the source plane is aligned with z_ind = 1), use the syntax:

pressure = angularSpectrumCW(input_plane, dx, (0:(Nz - 1)) * dx, f0, c0);

[1] Zeng, X., & McGough, R. J. (2008). Evaluation of the angular spectrum approach for simulations of near-field pressures. The Journal of the Acoustical Society of America, 123(1), 68-76.

Inputs

input_plane 2D matrix of complex pressure values over a plane [Pa].
dx Spatial step between grid points in the input plane [m].
z_pos Vector specifying the relative z-position of the planes to which the data is projected [m].
f0 Source frequency [Hz].
   
c0 Medium sound speed [m/s].
  OR
medium.sound_speed Medium sound speed [m/s].
medium.alpha_power Power law absorption exponent.
medium.alpha_coeff Power law absorption coefficient [dB/(MHz^y cm)].

Optional Inputs

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

Input Valid Settings Default Description
'AngularRestriction' (Boolean scalar) true Boolean controlling whether angular restriction is used as described in [1].
'DataCast' (string of data type) 'off' String input of the data type that variables are cast to before computation. For example, setting to 'single' will speed up the computation time (due to the improved efficiency of fft2 and ifft2 for this data type). This variable is also useful for utilising GPU parallelisation the Parallel Computing Toolbox by setting 'DataCast' to 'gpuArray-single'.
'DataRecast' (Boolean scalar) false Boolean controlling whether the output data is cast back to double precision. If set to false, sensor_data will be returned in the data format set using the 'DataCast' option.
'FFTLength' (integer numeric scalar) 1 + the next power of two larger than the grid size Length of the FFT used to compute the angular spectrum.
'GridExpansion' (integer numeric scalar) 0 Grid padding used to increase the accuracy of the projection. The grid expansion is removed before returning the calculated pressure to the user.
'Reverse' (Boolean scalar) false Boolean controlling whether the projection is in the forward (false) or backward (true) direction.

Outputs

pressure 3D matrix of complex pressure values across the 2D planes specified by z_pos, indexed as (x_ind, y_ind, plane_index) [Pa].

See Also

angularSpectrum