Conventional Beamformer

Also refererd to as Delay and Sum Beamformer.

class ConventionalBeamformer[source]

Bases: Serializable, TransmitBeamformer, ReceiveBeamformer

Conventional delay and sum beamforming.

The Bartlett[1] beamformer, also known as conventional or delay and sum beamformer, maximizes the power transmitted or received towards a single direction of interest \((\theta, \phi)\), where \(\theta\) is the zenith and \(\phi\) is the azimuth angle of interest in spherical coordinates, respectively.

Let \(\mathbf{X} \in \mathbb{C}^{N \times T}\) be the the matrix of \(T\) time-discrete samples acquired by an antenna arrary featuring \(N\) antennas. The antenna array’s response towards a source within its far field emitting a signal of small relative bandwidth is \(\mathbf{a}(\theta, \phi) \in \mathbb{C}^{N}\). Then

\[\hat{P}_{\mathrm{Capon}}(\theta, \phi) = \mathbf{a}^\mathsf{H}(\theta, \phi) \mathbf{X} \mathbf{X}^\mathsf{H} \mathbf{a}(\theta, \phi)\]

is the Conventional beamformer’s power estimate with

\[\mathbf{w}(\theta, \phi) = \mathbf{a}(\theta, \phi)\]

being the beamforming weights to steer the sensor array’s receive characteristics towards direction \((\theta, \phi)\), so that

\[\mathcal{B}\lbrace \mathbf{X} \rbrace = \mathbf{w}^\mathsf{H}(\theta, \phi) \mathbf{X}\]

is the implemented beamforming equation.

_decode(samples, carrier_frequency, angles, array)[source]

Decode signal streams for receive beamforming.

This method is called as a subroutine during decode_streams() and probe().

Parameters:
  • samples (numpy.ndarray) – Signal samples, first dimension being the number of signal streams \(N\), second the number of samples \(T\).

  • carrier_frequency (float) – The assumed carrier central frequency of the samples \(f_\mathrm{c}\).

  • angles (numpy.ndarray) – Spherical coordinate system angles of arrival in radians. A three-dimensional numpy array with the first dimension representing the number of angles, the second dimension of magnitude number of focus points \(F\), and the third dimension containing the azimuth and zenith angle in radians, respectively.

  • array (AntennaArrayState) – The assumed antenna array.

Return type:

ndarray

Returns:

Stream samples of the focused signal towards all focus points. A three-dimensional numpy array with the first dimension representing the number of focus points, the second dimension the number of returned streams and the third dimension the amount of samples.

_encode(samples, carrier_frequency, focus_angles, array)[source]

Encode signal streams for transmit beamforming.

Parameters:
  • samples (numpy.ndarray) – Signal samples, first dimension being the number of transmit antennas, second the number of samples.

  • carrier_frequency (float) – The assumed central carrier frequency of the samples generated RF signal after mixing in Hz.

  • focus_angles (numpy.ndarray) – Focused angles of departure in radians. Two-dimensional numpy array with the first dimension representing the number of focus points and the second dimension of magnitude two being the azimuth and elevation angles, respectively.

  • array (AntennaArrayState) – The assumed antenna array.

Return type:

ndarray

Returns:

The encoded signal samples. Two-dimensional complex-valued numpy array with the first dimension representing the number of transmit antennas streams and the second dimension the number of samples.

num_receive_output_streams(num_input_streams)[source]

Get required number of output streams during decoding.

Parameters:

num_input_streams (int) – Number of input streams.

Return type:

int

Returns: The number of output streams. Negative numbers indicate infeasible configurations.

property num_receive_focus_points: int

Number of required receive focus points.

If this is \(1\), the beamformer is considered to be a single focus point beamformer and receive_focus will return a single focus point. Otherwise, the beamformer is considered a multi focus point beamformer and receive_focus will return a Sequence of focus points.

Returns: Number of focus points.

property num_transmit_focus_points: int

Number of required transmit focus points.

If this is \(1\), the beamformer is considered to be a single focus point beamformer and transmit_focus will return a single focus point. Otherwise, the beamformer is considered a multi focus point beamformer and transmit_focus will return a Sequence of focus points.

yaml_tag: Optional[str] = 'ConventionalBeamformer'

YAML serialization tag.