kaira.channels.RayleighFadingChannel

Inheritance diagram of RayleighFadingChannel

Inheritance diagram for RayleighFadingChannel

class kaira.channels.RayleighFadingChannel(coherence_time=1, avg_noise_power: float | None = None, snr_db: float | None = None, *args: Any, **kwargs: Any)[source]

Bases: FlatFadingChannel

Specialized channel for Rayleigh fading in wireless communications.

This is a convenience class that creates a FlatFadingChannel with the fading_type set to “rayleigh” to model Rayleigh fading, which is common in non-line-of-sight wireless propagation environments.

Mathematical Model:

y[i] = h[⌊i/L⌋] * x[i] + n[i] where L is the coherence length, h follows a Rayleigh distribution, and n ~ CN(0,σ²)

Parameters:
  • coherence_time (int, optional) – Number of samples over which the fading coefficient remains constant. Defaults to 1.

  • avg_noise_power (float, optional) – The average noise power σ²

  • snr_db (float, optional) – SNR in dB (alternative to avg_noise_power)

Example

>>> # Create a Rayleigh fading channel with coherence time of 10 samples
>>> channel = RayleighFadingChannel(coherence_time=10, snr_db=15)
>>> x = torch.complex(torch.ones(100), torch.zeros(100))
>>> y = channel(x)  # Output with Rayleigh fading

Methods

__init__

Initialize the Rayleigh Fading channel.

forward

Apply flat fading and noise to the input signal.

get_config

Get a dictionary of the channel's configuration.

Attributes

k_factor

avg_noise_power

snr_db

shadow_sigma_db

forward(x: Tensor, *args: Any, csi=None, noise=None, **kwargs: Any) Tensor

Apply flat fading and noise to the input signal.

Parameters:
  • x (torch.Tensor) – The input tensor.

  • *args – Additional positional arguments (unused).

  • csi (Optional[torch.Tensor]) – Pre-computed channel state information (fading coefficients). If provided, these coefficients are used instead of generating new ones.

  • noise (Optional[torch.Tensor]) – Pre-generated noise tensor. If provided, this noise is added.

  • **kwargs – Additional keyword arguments (unused).

Returns:

The output tensor after applying fading and noise.

Return type:

torch.Tensor

get_config() Dict[str, Any]

Get a dictionary of the channel’s configuration.

This method returns a dictionary containing the channel’s parameters, which can be used to recreate the channel instance.

Returns:

Dictionary of parameter names and values

Return type:

Dict[str, Any]

k_factor: float | None
avg_noise_power: float | None
snr_db: float | None
shadow_sigma_db: float | None
__init__(coherence_time=1, avg_noise_power: float | None = None, snr_db: float | None = None, *args: Any, **kwargs: Any)[source]

Initialize the Rayleigh Fading channel.

Parameters:
  • coherence_time (int, optional) – Samples over which fading is constant. Defaults to 1.

  • avg_noise_power (float, optional) – Average noise power σ².

  • snr_db (float, optional) – SNR in dB (alternative to avg_noise_power).

  • *args – Variable length argument list passed to the base class.

  • **kwargs – Arbitrary keyword arguments passed to the base class.