Channels#

class AWGN(value: float = 1.0, unit: Literal['sigma2', 'snr', 'snr_dB', 'snr_dBm'] = 'sigma2', sigma2s: float = 1.0, sigma2s_method: Literal['fixed', 'measured'] = 'fixed', seed: int = None, name: str = 'awgn')#

A class representing an Additive White Gaussian Noise (AWGN) for MIMO channel.

This class models an AWGN channel, which adds complex Gaussian noise to a signal. It is characterized by a noise power specified by sigma squared (sigma2).

Signal Model#

\[y_u[n] = x_u[n] + b_u[n]\]

where:

  • \(b[n]\sim \mathcal{N}(0, \sigma^2)\) is a Gaussian additive noise.

For complex signals, a circular Gaussian noise is applied to the signal. The value of \(\sigma^2\) is computed with respect to the method specified as input.

Attributes#

valuefloat, optional

The value associated with the given method. Defaut is 1

unitstr, optional

The unit to compute the noise power (“nat”, “dB”, “dBm”). Default is “var_nat”

sigma2sfloat, optional

Signal power. default is 1

seedint, optional

The seed for the noise generator.

sigma2s_method: Literal[“fixed”, “measured”]

The method used to obtain the signal power

namestr

Name of the channel instance.

class BaseMIMOChannel(H: array | None = None, extend: bool = True, name: str = 'mimo_channel')#

A base class for modeling Multiple-Input Multiple-Output (MIMO) channels.

This class provides a framework for simulating MIMO communication channels, including methods for setting channel matrices, configuring signal-to-noise ratios (SNR), generating noise, and processing input signals.

Signal Model#

\[\mathbf{y}[n] = \sum_{l=0}^{L}\mathbf{H}[l]x[n-l] + \mathbf{b}[n]\]

where

  • \(\mathbf{H}[l]\) is a channel matrix of size \(N_r \times N_t\) corresponding the \(l^{th}\) channel tap,

  • \(\mathbf{x}[n]\) is a \(N_t\) vector containing the transmitted data,

  • \(\mathbf{b}[n]\sim \mathcal{N}_c(\mathbf{0},\sigma^2\mathbf{I}_{N_r})\) is a \(N_r\) vector containing the additive white Gaussian noise.

Attributes#

Pfloat

Transmit power.

HOptional[np.array]

List of channel matrices for each tap. Each matrice should have equal dimension.

extendbool

Flag to extend the input signal.

namestr

Name of the processor.

class FlatMIMOChannel(H: Optional[<built-in function array>] = None, extend: bool = True, name: str = 'mimo_channel')#
class SelectiveMIMOChannel(H: Optional[<built-in function array>] = None, extend: bool = True, name: str = 'mimo_channel')#