How to use the LDPC encoder/decoder in MATLAB ?

65 views (last 30 days)
Greetings,
I am simply trying to use the LDPC encoder/decoder in MATLAB. A very small code like the following:
message = randi([0 1],2,1);
ldpcEncoder = comm.LDPCEncoder;
ldpcDecoder = comm.LDPCDecoder;
encoder = ldpcEncoder(message);
decoder = ldpcDecoder(encoder);
is throwing an error :
Error using LDPCEncoder
Input must be a column vector of length K, the message length. K is the number of columns in the parity check matrix minus the number of rows.
I presume when we don't mention a parity check matrix it takes a default value as described in dvbs2ldpc. So here, I really don't know what's happening even with such a simple code. Please guide me through it. Thank you !

Accepted Answer

Harikrishnan Balachandran Nair
Hi,
From my Understanding, you are facing an error related to the size of your message ,when trying to perform LDPC coding. As you have mentioned in the question, when a parity check matrix is not specified, the default sparse parity check matrix is obtained as dvbs2ldpc(1/2), which returns the parity-check matrix H of the LDPC code with code rate (1/2) from the Digital Video Broadcasting standard DVB-S.2. The block length of the code is 64,800. Hence the size of the parity check matrix H is 32400*64800. Thus the size of your message should be (64800-32400), as the dimension of the matrix H is (N-K) by (N) , where K is the size of your message, and N is the block length of the code. You can see that the error no longer exists when the following code is executed. Hope this helps!
message = randi([0 1],32400,1);
ldpcEncoder = comm.LDPCEncoder;
ldpcDecoder = comm.LDPCDecoder;
encoder = ldpcEncoder(message);
decoder = ldpcDecoder(encoder);
  4 Comments
Rupali c
Rupali c on 10 May 2023
The both arrays message and decoder should be same. but actually why are they different?
Amit Kansal
Amit Kansal on 20 Nov 2023
The input to the decoder must be LLRs (log-likelihood ratios), while what is passed in are binary bits.
Using
decoder = ldpcDecoder(1-2*encoder);
to map the logical 0 to a 1 and logical 1 to a -1, gives message as the expected decoded output.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!