Beamformer

Beamforming is split into the prototype classes TransmitBeamformer and ReceiveBeamformer for beamforming operations during signal transmission and reception, respectively. They are both derived from the base BeamformerBase. This is due to the fact that some beamforming algorithms may be exclusive to transmission or reception use-cases. Should a beamformer be applicable during both transmission and reception both prototypes can be inherited. An example for such an implementation is the Conventional beamformer.

class FocusMode(value)

Bases: enum.Enum

The focus mode of the beamformer.

SPHERICAL = 0

Focus points in spherical coordinates, i.e. azimuth and zenith angles in radians.

HORIZONTAL = 1

Focus points in horizontal coordinates, i.e. azimuth and elevation angles in radians.

CARTESIAN = 2

Focus points in Cartesian coordinates, i.e. xyz in m.

DEVICE = 3

Focus points considering peer devices.

class BeamformerBase(operator=None)

Bases: abc.ABC

Base class for all beam steering precodings.

Args:

operator (Operator, optional):

The operator this beamformer is attached to. By default, the beamformer is considered floating.

property operator: Optional[hermespy.core.device.Operator]

The operator this beamformer is assigned to.

Return type

Optional[Operator]

Returns

Handle to the operator. None if the beamformer is considered floating.

class TransmitBeamformer(operator=None)

Bases: hermespy.beamforming.beamformer.BeamformerBase, abc.ABC

Base class for beam steering precodings during signal transmissions.

Args:

operator (Transmitter, optional):

The operator this beamformer is attached to. By default, the beamformer is considered floating.

abstract property num_transmit_input_streams: int

Number of input streams required by this beamformer.

Return type

int

Returns

Number of input streams.

abstract property num_transmit_output_streams: int

Number of output streams generated by this beamformer.

Return type

int

Returns

Number of output streams.

abstract property num_transmit_focus_angles: int

Number of required transmit focus angles.

Return type

int

Returns

Number of focus angles.

property transmit_focus: Tuple[numpy.ndarray, hermespy.beamforming.beamformer.FocusMode]

Focus points of the beamformer during transmission.

Return type

Tuple[ndarray, FocusMode]

Returns

  • Numpy array of focus points elevation and azimuth angles

  • Focus mode

transmit(signal, focus=None)

Focus a signal model towards a certain target.

Parameters
  • signal (Signal) – The signal to be steered.

  • focus (np.ndarray, optional) – Focus point of the steered signal power.

Return type

Signal

Returns

Samples of the focused signal.

class ReceiveBeamformer(operator=None)

Bases: abc.ABC

Base class for beam steering precodings during signal receptions.

Args:

operator (Receiver, optional):

The operator this beamformer is attached to. By default, the beamformer is considered floating.

abstract property num_receive_input_streams: int

Number of input streams required by this beamformer.

Return type

int

Returns

Number of input streams.

abstract property num_receive_output_streams: int

Number of output streams generated by this beamformer.

Return type

int

Returns

Number of output streams.

abstract property num_receive_focus_angles: int

Number of required transmit focus angles.

Return type

int

Returns

Number of focus angles.

property receive_focus: Tuple[numpy.ndarray, hermespy.beamforming.beamformer.FocusMode]

Focus points of the beamformer during reception.

Return type

Tuple[ndarray, FocusMode]

Returns

  • Numpy array of focus points elevation and azimuth angles

  • Focus mode

receive(signal, focus_points=None, focus_mode=FocusMode.SPHERICAL)

Focus a signal model towards a certain target.

Parameters
  • signal (Signal) – The signal to be steered.

  • focus_points (np.ndarray, optional) – Focus point of the steered signal power. Two-dimensional numpy array with the first dimension representing the number of points and the second dimension representing the point values.

  • focus_mode (FocusMode, optional) – Type of focus points. By default, spherical coordinates are expected.

Return type

Signal

Returns

Signal focused towards the requested focus points.

property probe_focus_points: numpy.ndarray
Return type

ndarray

probe(signal, focus_points=None)

Focus a signal model towards a certain directions of interest.

Parameters
  • signal (Signal) – The signal to be steered.

  • focus_points (np.ndarray, optional) – Focus point of the steered signal power. Two-dimensional numpy array with the first dimension representing the number of points and the second dimension representing the point values.

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.