How to use the LDPC encoder/decoder in MATLAB ?

39 ビュー (過去 30 日間)
Das Siddharth
Das Siddharth 2021 年 8 月 17 日
コメント済み: Amit Kansal 2023 年 11 月 20 日
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 !

採用された回答

Harikrishnan Balachandran Nair
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
Rupali c 2023 年 5 月 10 日
The both arrays message and decoder should be same. but actually why are they different?
Amit Kansal
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 ExchangeError Detection and Correction についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by