Space-Time Block Coding#

class Alamouti#

Bases: SymbolPrecoder, Serializable

Alamouti precoder distributing symbols in space and time.

Support for 2 transmit antennas only. Refer to Alamouti [Ala98] for further information.

yaml_tag: str = 'ALAMOUTI'#

YAML serialization tag.

encode(symbols)#

Encode data into multiple antennas with space-time/frequency block codes.

Parameters:

symbols (StatedSymbols) – Input signal featuring \(K\) blocks.

Return type:

StatedSymbols

Returns: Encoded data with size \(2 \times K\) symbols

Raises:
  • ValueError – If more than a single symbol stream is provided.

  • RuntimeError – If the number of transmit antennas is not two.

  • ValueError – If the number of data symbols is not even.

decode(symbols)#

Decode data for STBC with 2 antenna streams

Received signal with equal noise power is assumed, the decoded signal has same noise level as input. If more than 2 receive antennas are employed, then MRC is applied on the STBC decoding output of all antennas.

Parameters:

symbols (StatedSymbols) – Input signal with \(N \times K\) symbol blocks.

Return type:

StatedSymbols

Returns: Decoded data with size \(N \times K\)

property num_input_streams: int#

Required number of input symbol streams for encoding / number of resulting output streams after decoding.

Returns:

The number of symbol streams.

Return type:

int

property num_output_streams: int#

Required number of input symbol streams for decoding / number of resulting output streams after encoding.

Returns:

The number of symbol streams.

Return type:

int