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.BlockDeinterleaver that reverts the interleaver for a given input sequence.
- Parameters:
interleaver (sionna.phy.fec.interleaving.RandomInterleaver | sionna.phy.fec.interleaving.RowColumnInterleaver | sionna.phy.fec.interleaving.Turbo3GPPInterleaver) – Associated interleaver which shall be deinterleaved by this block. Can be either
RandomInterleaver,RowColumnInterleaver, orTurbo3GPPInterleaver.precision (str | None) – Precision used for internal calculations and outputs. If None, inherits from
interleaver.device (str | None) – Device for computation (e.g., ‘cpu’, ‘cuda:0’). If None, inherits from
interleaver.
- Inputs:
x – torch.Tensor. 2+D tensor of arbitrary shape.
seed – int. 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