How to use the LDPC encoder/decoder in MATLAB ?
39 次查看(过去 30 天)
显示 更早的评论
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 !
0 个评论
采纳的回答
Harikrishnan Balachandran Nair
2021-8-20
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 个评论
Rupali c
2023-5-10
The both arrays message and decoder should be same. but actually why are they different?
Amit Kansal
2023-11-20
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Error Detection and Correction 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!