torchsig.transforms.signal_transforms.Fading

class torchsig.transforms.signal_transforms.Fading(coherence_bandwidth=(0.01, 0.1), power_delay_profile: Tuple | List | ndarray = (1, 1), **kwargs)[source]

Bases: SignalTransform

SignalTransform that applies a channel fading model.

Note, currently only performs Rayleigh fading:

A Rayleigh fading channel can be modeled as an FIR filter with Gaussian distributed taps which vary over time. The length of the filter determines the coherence bandwidth of the channel and is inversely proportional to the delay spread. The rate at which the channel taps vary over time is related to the coherence time and this is inversely proportional to the maximum Doppler spread. This time variance is not included in this model.

coherence_bandwidth

Coherence bandwidth sampling parameters. Defaults to (0.01, 0.1).

Type:

optional

coherence_bandwidth_distribution

Random draw from coherence bandwidth distribution.

Type:

Callable[[], float]

power_delay_profile

A list of positive values assigning power to taps of the channel model. When the number of taps exceeds the number of items in the provided power_delay_profile, the list is linearly interpolated to provide values for each tap of the channel. Defaults to (1, 1).

Type:

Tuple | List | np.ndarray, optional

Methods

add_parent

Add parent Seedable object and set up RNGs accordingly

get_distribution

get_second_seed

Gets second seed, usually used to seed both torch and numpy generators with slightly different seeds

seed

Seed number generators with given seed.

setup_rngs

Initialize torch and numpy number generators, and update its children.

update

Updates bookkeeping to transforms in Signal's SignalMetadata and checks signal valididty.

update_from_parent

Update numpy and torch number generators with parent seed

__init__(coherence_bandwidth=(0.01, 0.1), power_delay_profile: Tuple | List | ndarray = (1, 1), **kwargs)[source]

Transform initialization as Seedable.

__call__(signal: Signal) Signal[source]

Performs transforms.

Parameters:

signal (Signal) – Signal to be transformed.

Raises:

NotImplementedError – Inherited classes must override this method.

Returns:

Transformed Signal.

Return type:

Signal

__repr__() str

Transform string representation. Should be able to recreate class from this string.

Returns:

Transform representation.

Return type:

str

__str__() str

Return str(self).

add_parent(parent) None

Add parent Seedable object and set up RNGs accordingly

get_second_seed(seed: int) int

Gets second seed, usually used to seed both torch and numpy generators with slightly different seeds

Parameters:

seed (int) – Seed to use.

Returns:

New seed.

Return type:

int

seed(seed: int) None

Seed number generators with given seed.

Parameters:

seed (int) – Seed to use.

setup_rngs() None

Initialize torch and numpy number generators, and update its children.

update(signal: Signal) None

Updates bookkeeping to transforms in Signal’s SignalMetadata and checks signal valididty. Inherited classes should always call self.update() after performing transform operation (inside __call__).

Parameters:

signal (Signal) – Transformed signal.

update_from_parent() None

Update numpy and torch number generators with parent seed