Logo der Uni Stuttgart
How to use the Demo

Input parameters

Specify the desired message length $K$ and codeword length $N$ as integers.

The base graph selection is set to "auto" per default, meaning the selection is done according to the 5G standard. It can be changed to one of the base graphs.

Rate matching options are

  • Base graph rate matching: Puncturing and shortening are only applied on a base graph level, making it possible to use a blockwise decoder structure. A downloadable file contains indices of bits to be punctured (first row of the array) and shortened (second row of the array) on a sub base graph level. The values are sorted in ascending order and are padded with $2^{16}-1=65535$ for .npy and .mat files.
  • Round up N,K: Rounds up $N$ and $K$ to the next multiple of $Z$, making it possible to use a blockwise decoder structure. This slightly changes the code rate but the user will not have to deal with puncturing and shortening.
  • Delete cols. and rows: Puncturing and shortening is applied to the output matrix. Blockwise decoding is not possible but the user doesn't have to deal with rate matching, except for $R>11/12$ and $R>10/12$ (depending on the BG), because deleting rows and columns of the double diagonal part causes problems. In this case an additional file is provided, see "Base graph rate matching".
  • Puncture 2Z msg. bits: Applies message bit puncturing to G.
The message bit puncturing is never applied to $\mathbf{H}$ directly. Decoding is typically done on a length $N+2Z$ word, where punctured bits are initialized with a log-likelihhod ratio of zero. The shortening can be dealt with by setting the respective bits of the received code word to zero.

The output matrix can be selected. One demo provides downloadable files containing $\mathbf{H}$ and another demo provides files containing $\mathbf{G}$. You can chose between the "normal" generator matrix and two generator matrices $\mathbf{G_1}$ and $\mathbf{G_2}$, where $\mathbf{G}=\mathbf{G_1} \cdot \mathbf{G_2}$.

The default value for download format is set to "none", where no downloadable file is created. The sparse formats are highly recommended for large matrices. Selectable output formats are:

  • .mat (sparse): MATLAB's sparse matrix representation. Only nonzero elements and their positions are stored. The indexing starts with 1.
  • .mat: Full output matrix as MATLAB matrix with datatype uint8. The .mat files can be directly imported to your MATLAB workspace.
  • alist / .txt (sparse): The alist format contains the matrix dimensions, column weights and row weights, the row indices of all nonzero elements column wise, aswell as the column indices of all nonzero elements in a row wise fashion. The indexing starts with 1. An example and more detailed information can be found here.
  • .txt: Full output matrix, where the columns are separated by space and the rows are separated by newlines.
  • .npy (sparse): Numpy array containing indices of nonzeros elements as uint16. The first row contains the vector of column positions and the second row contains the vector of the corresponding row positions. The indexing starts with 0.
  • .npy: Full output matrix as numpy array with datatype uint8.