Skip to content

Latest commit

 

History

History
34 lines (28 loc) · 1.28 KB

README.md

File metadata and controls

34 lines (28 loc) · 1.28 KB

Encoder Module

The module implements encoders for LDPC codes. Currently implemented:

  • generator based - The EncoderG class allows encoding frames via multiplication with a specified generator matrix.
  • IEEE802.11 - The EncoderWiFi class allows encoding frames using the IEEE802.11 spec codes. Encoding is done via back substitution.
  • Parity check based - EncoderTriangularH class allows encoding frames via back substitution. It requires a lower triangular parity check matrix.

Examples:

Generator Based

Add example

IEEE802.11 (WiFi)

import numpy as np
from bitstring import Bits
from ldpc.encoder import EncoderWiFi
from ldpc.wifi_spec_codes import WiFiSpecCode
from ldpc.utils import QCFile

# create information bearing bits
bits = np.array(Bits(bytes=bytes(list(range(41))))[:648 // 2], dtype=np.int_)
# create encoder with frame of 648 bits, and rate 1/2. Possible rates and frame sizes are per the ieee802.11n spec.
enc = EncoderWiFi(WiFiSpecCode.N648_R12)
# encode bits
encoded = enc.encode(bits)

# verify validity of codeword
h = QCFile.from_file("../code_specs/ieee802.11/N648_R12.qc").to_array()
np.dot(h, np.array(encoded)) % 2  # creates an all zero vector as required.