LDPC Introduction

**Low Density Parity Check (LDPC) Codes** are a class of linear block codes. They are called
Low Density Parity Check as the parity check matrix **(H)** fully describing the code is sparse (number of 1's is very low in comparison
to the number of 0's). Due to the sparse property of the parity check matrix, the memory complexity of the code is relatively low in comparison to other codes when considering
large codes. LDPC Codes are divided into two types:

•* Regular LDPC Codes:* The parity check matrix

•* Irregular LDPC Codes:* The number of 1's is not constant in each column or row of the parity check matrix

As mentioned previously LDPC codes are considered as linear block codes, so they have "**k** input bits" and "**n** output bits" and their parity check matrix **(H)** is expressed as an **(m$\times$n)** matrix, where **m=n-k**. The number of 1's in **(H)**
is constant and equal to **(m$\cdot$c = n$\cdot$v)** and so the design rate is expressed as: $$r_{d}=\dfrac{k}{n}=\dfrac{n-m}{n}=1-\dfrac{m}{n}=1-\dfrac{v_{average}}{c_{average}}$$
The "density" of an LDPC Code is expressed as: $$\dfrac{\rm{Number\:of\:1's}}{\rm{Total\:elements\:in\:H}}=\dfrac{m \cdot c}{m \cdot n}(Regular)=\dfrac{c}{n}=\dfrac{v}{m}$$ $$c \triangleq \rm{number\:of\:check\:nodes}$$ $$v \triangleq \rm{number\:of\:variable\:nodes}$$