LDPC toolkit for MATLAB

RELEASE 1.1 - 05/5/2002

It has almost been a year since the toolkit's first release and I finally managed to find some time to improve the toolkit a wee bit. In release 1.1, the toolkit includes a "decode_ldpc_log()" function that implements LDPC decoding in the log domain. This works a lot faster than the probability domain decoding implemented in release 1.0. This function takes the same parameters as the function "decode_ldpc" in the previous release. Function usage examples can be found in my hastily thrown together tutorial, the links to which can be found at the bottom of this page

Also the "bpsk()" function used for modulation, maps bit 0 to '1' and bit 1 to '-1' which is the general practice. The mapping was done the other way in the first release of the software.

Click the links below to download the two new files. Click here ( ldpc_toolkit_1_1.zip, ldpc_toolkit_1_1.tar.gz) to download the entire package.
1.decode_ldpc_log.m
2.bpsk.m

WARNING: Do not use the 'decode_lpdc_log' function along with the 'bpsk' function of release 1. The other functions are the same in both versions and do not present a problem.


RELEASE 1.0 - 07/27/2001
The Matlab toolkit contains the following functions that can be used by students to understand and implement Low Density Parity Check Codes.
1. gen_ldpc(rows,cols)
2. rref_GF2(parity_check_matrix)
3. rearrange_cols(parity_check_matrix)
4. inv_GF2(A)
5. mul_GF2(A,B)
6. reorder_bits(u1,rearranged_cols)
7. bpsk(codeword,amplitude);
8. awgn(tx_waveform,No)
9. decode_ldpc(rx_waveform,No,1,h,scale)
10.extract_mesg(vhat,rearranged_cols)

This software is not very fast when the block size of the codes becomes large. This has not been implemented with  the most efficient algorithm for encoding and decoding the codes. The software has been implemented in the simplest and most direct manner possible so that  it is easier to look at the code and understand the implementation issues. For a rate 1/2 code with a block size of 1000, I was only able to run a few 1000 blocks/day on a Sun Ultra 5 when the error rate was pretty high. This is because the software iterates a maximum of 1000 times whenever there is a code-word error. If the parity check matrix is big, it takes long time because each iteration updates around 6 quantities associated with each entry in the parity check matrix. So if you want to run a couple of million bits for a large block size at a high error rate...you better have a  lot of  patience.
The software runs faster on  MATLAB for windows.

The functions in this release do not check for 'function argument errors'. For example, if you use the mul_GF2() functions and pass matrices with
dimensions that do not match for a matrix multiplication, the software will not tell you that matrix dimensions do not agree. Instead, some other error message like 'index exceeds matrix dimension' will be displayed. Hence, before using any functions, make sure that the dimensions of the arguments
are valid for the function to be executed without any error.

Since this is the first release of the toolkit, the program might have bugs. Email me if you find  any bugs or  if you have any suggestions or if you just have any questions. If you are the hiring manager of a Telecomm company, I just want you to know that I am available for work from Dec. 2001.;-)

 The software is divided into 4 parts .Click on the links to browse through the short tutorial I prepared. This tutorial is
intended to be a general introduction to LDPC codes and not just for the people who want  to use the software.
1. Generating the parity-check matrix
2. Encoding message blocks
3. Modulation and Channel Simulations
4. Decoding

Software Download and Download instructions

References  and other reading.

This software is freely distributed without any warranty.  The software may contain bugs and has not been extensively tested for use in critical research or commercial applications. The user is solely responsible for use of this software.



Home | Research | Projects| About me | Photos | Resume | Software,tutorials and downloads | Personal | Contact