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

Examples using kaira.channels.RayleighFadingChannel

Channel Comparison

Channel Comparison

Rician Fading vs Rayleigh Fading Channels

Rician Fading vs Rayleigh Fading Channels

Performance Metrics Visualization

Performance Metrics Visualization

Channel Capacity Analysis with Kaira

Channel Capacity Analysis with Kaira
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.