Hi all,
I’d just like to share a status of how my LDPC implementation project is
going. When the summer started, Manu and I made a list of the
LDPC-related algorithms for encoding, decoding, and parity check matrix
construction that we had found in our literature review. We then divided
them up such that there would be no overlap in our efforts. The
algorithms that I put on my list were:
- Regular and irregular parity check matrix construction functions
- Generating a code that is optimized for PSK
- Constructing quasi-cyclic codes which are especially efficient for
encoding - Performing encoding as described by Richardson & Urbanke in Appendix
A of ‘Modern Coding Theory’ (manipulating the parity-check matrix into
an approximate upper triangulation form which reduces complexity during
the real-time encoding steps) - Bit-flip decoding, a hard decision algorithm
- Min-sum algorithm for decoding
So far, I’ve written prototype functions for these methods in python,
using numpy: #1/regular, #4, and #5.
Right now, I’m at the stage where I’m trying to link them all together
and confirm that the processes perform as expected before moving on to
converting them to C++. The challenge that I’m facing is that the parity
check matrices being created by my function are not full rank, and so
they don’t work with the encoding algorithm. I have tried a method to
manipulate them into being full rank before encoding but it was not
successful. This is my top priority right now - to be able to have the
parity-check matrices that I am creating work with the encoding
algorithm that I’ve written up. Then I’d like to finish testing the
chain of processes before moving on to creating classes that inherit
from those in the FEC API.
My GitHub repo is here:
Any questions or comments, just let me know.
Thanks,
Tracie Perez