Deinterleaver#

class sionna.phy.fec.interleaving.Deinterleaver(interleaver: sionna.phy.fec.interleaving.RandomInterleaver | sionna.phy.fec.interleaving.RowColumnInterleaver | sionna.phy.fec.interleaving.Turbo3GPPInterleaver, precision: str | None = None, device: str | None = None, **kwargs)[source]#

Bases: sionna.phy.block.Block

Deinterleaver that reverts the interleaver for a given input sequence.

Parameters:
Inputs:
  • x – torch.Tensor. 2+D tensor of arbitrary shape.

  • seedint. An integer defining the state of the random number generator. If explicitly given, the global internal seed is replaced by this seed. Can be used to realize random interleaver/deinterleaver pairs (call with same random seed).

Outputs:

x_out – torch.Tensor. 2+D tensor of same shape and dtype as the input x.

Notes

This block provides a wrapper of the inverse interleaver function.

Examples

import torch
from sionna.phy.fec.interleaving import RandomInterleaver, Deinterleaver

interleaver = RandomInterleaver(seed=42, keep_state=True)
deinterleaver = Deinterleaver(interleaver)

x = torch.arange(10).reshape(1, 10).float()
y = interleaver(x)
z = deinterleaver(y)
print(torch.allclose(x, z))
# True

Attributes

property interleaver: sionna.phy.fec.interleaving.RandomInterleaver | sionna.phy.fec.interleaving.RowColumnInterleaver | sionna.phy.fec.interleaving.Turbo3GPPInterleaver#

Associated interleaver instance.

Methods

build(input_shape: tuple) None[source]#

Build block.

Parameters:

input_shape (tuple)