Conventional Beamformer¶

Also refererd to as Delay and Sum Beamformer.

class ConventionalBeamformer(operator=None)[source]

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 receive() and probe().

Parameters:
• samples (np.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 (AntennaArray) – 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 (np.ndarray) – Signal samples, first dimension being the number of transmit antennas, second the number of samples.

• carrier_frequency (float) – The assumed carrier central frequency of the samples.

• focus_angles (np.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 (AntennaArray) – The assumed antenna array.

Return type:

ndarray

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.

Number of input streams required by this beamformer.

Dimension $$N$$ of the input sample matrix $$\mathbf{X} \in \mathbb{C}^{N \times T}$$.

Returns:

Number of input streams $$N$$.

Number of output streams generated by this beamformer.

Dimension $$M$$ of the output sample matrix $$\mathbf{Y} \in \mathbb{C}^{M \times T}$$.

Returns:

Number of output streams $$M$$.

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.

Returns: Number of focus points.

property num_transmit_input_streams: int

Number of input streams required by this beamformer.

Returns:

Number of input streams.

property num_transmit_output_streams: int

Number of output streams generated by this beamformer.

Returns:

Number of output streams.

yaml_tag: Optional[str] = 'ConventionalBeamformer'

YAML serialization tag.