2.5

2.5 | 2 ratings Rate this file 5 Downloads (last 30 days) File Size: 2.8 KB File ID: #18265

Girth-twelve column-weight two QC-LDPC codes

by Gabofetswe Malema

 

09 Jan 2008 (Updated 10 Jul 2008)

contructs girth-twelve column-weight two qc-LDPC codes

| Watch this File

File Information
Description

The program constructs girth-twelve column-weight QC-LPDC codes. The rate can be changed by changing k(row-weight), size is changed by varying m(sub-matrix size). The program/algorithm does not guarantee to get girth twelve code. It guarantees girth of eight. One may need to run the programs many times to get girth of twelve.

MATLAB release MATLAB 7.0.1 (R14SP1)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (12)
16 Jan 2008 Yang Xiao

I have checked your LDPC codes, and found two problems of your codes: 1. the parity check is singular, which leads to the difficulty of obtaining generator matrix; 2. the BER performance of your codes is very poor, which leads to your codes to be useless.
  I wonder that you have not checked the BER performance of your codes before your publication. There is a long way for you to construct good LDPC codes.

18 Jan 2008 wilson grey

The author tries to construct good QC cycle-matrix(which has only colomn weight two) for ldpc code with large girth. It seems that for such codes girth is really important though their performance is not well because their minimum distance increase logarithmically with code length.
1)The parity check is singular, which leads to the difficulty of obtaining generator matrix.
this is not any problem,just choose the unrelated rows to invert.
2)for the second problem
I think Yang Xiao need to read the author's paper carefully.

19 Jan 2008 Yang Xiao

Reply to Mr. Wilson Grey:
1. We verified that the codes of the program have girth 12 indeed, but the minimum weight of the codes is smaller than 11 when code length is 600 and 1200. We have not see that the minimum weight of the codes increase logarithmically with code length as you expected.
2. That is why the BER of the code is poor. 3. This code has verified one of our results: some LDPC codes of large girths don't ensure that they can get large minimum weights.

19 Jan 2008 Yang Xiao

Reply Mr. Wilson Grey again:
I commented the program that the singularity problem is existing in the LDPC codes, you think that you can delete the related rows of H to solve the problem. However, this will lead to some columns' weights become one instead of two, which leads the codes to be BER poor also. Can you solve the further problem?

20 Jan 2008 wilson grey

Reply to Mr. Yang Xiao
1)Choose the unrelated rows to get Generate matrix G. But use the check matrix H still for decoding. You may mistake my idea.
2)I still recommend you to read the author's article "Quasi-Cyclic LDPC Codes of Column-Weight Two Using a Search Algorithm". Compared to the random contruction, the author provide one way to generate high girth cycle matrix which has better performance. Such ldpc code can be used in some applications such as partial response channels.
As be known, the code is poor when its tanner graph has no cycle which leads to small code distance. So large girth is only one factor affecting the code.

26 Jan 2008 Yang Xiao

Reply to Mr. Wilson Grey (3):
1. To solve the code singularity problem I found, you suggested that "choose the unrelated rows to get Generate matrix G, but use the check matrix H still for decoding". It is wrong, since the original H can not make mod(H*G',2)=0. Thus, we can not use the original H for decoding.
2. I have read the author's paper, and I also have found that from the published LDPC code, we can not obtain the BER results of the paper.
3. Applying the result of [1], we checked the minimum weight of the generator matrix of the code, it is very small. We can not image such small minimum weight of the generator matrix to get the BER curves in the author's paper.
4. The minimum weight of the generator, in fact, can determine the BER of the codes [1].
[1] Y. Xiao, "Evaluations of Good LDPC Codes Based on Generator Matrices", The 8th International Conference on Signal Processing, Publication Date: 2006, Volume: 3, Guilin China, ISBN: 0-7803-9737-1, Digital Object Identifier: 10.1109/ICOSP. 2006.345907, Posted online: 2007-04-10 09:16:17.0
5. I think that you should do some experiments for this codes before your defence for this author's program.

30 Jan 2008 wilson grey

Reply to Mr. Yang Xiao(2)
1)if H(M*N) can be splitted into two parts
{H1}
----
{H2}
H1 has full rank. H2 can be expressed by some rows of H1.
Then one can get G from H1. so C*transpose(H1)=0, C(1*N) is any code word generated by G. Because H2 can be expressed by some rows of H1. So C*transpose(H2)=0.
U may check it.

04 Feb 2008 Yang Xiao

Reply to Mr. Wilson Grey:
You said that on Jan 30:
"if H(M*N) can be splitted into two parts
{H1}|{H2}, H1 has full rank. H2 can be expressed by some rows of H1.Then one can get G from H1."
However, you ignored the vital prolem of the author's program, his H(M*N) can obtain the H1 to have full rank, since H has some related rows. When you delete the related rows of H, the H will have some columns of weight 1.It leads to the poor BER of the author's proposed codes, and the code becomes an irregular code.

08 Feb 2008 wilson grey

1)if H(M*N) can be splitted into two parts
{H1}
----
{H2}
H1 has full rank. H2 can be expressed by some rows of H1.
Then one can get G from H1. so C*transpose(H1)=0, C(1*N) is any code word generated by G. Because H2 can be expressed by some rows of H1. So C*transpose(H2)=0.
So any codeword C*H=0
This is why we can still use H for decoding!!!
U may check it.

08 Feb 2008 Yang Xiao

Correct my comments on Feb.4:
1. The vital problem of the author's code is that his H(M*N) can not obtain the H1 to have full rank, where H is splitted into two parts [H1|H2], since H has some related rows.
2. When you delete the related rows of H, you can get the H1 to have full rank, but the H will have some columns of weight 1. It leads to the poor BER of the author's proposed codes, and the code becomes an irregular code.
3. Wilson Grey's comments on Jan. 30 and Feb.8 are not valid for the the H1 to be singular (not full rank).

09 Apr 2008 Yang Xiao

My recent test result for the proposed LDPC code for m=100,
{BER}/SNR(0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5)dB =
0.1360 0.1239 0.1138 0.1012 0.0910 0.0773 0.0664 0.0503 0.0395 0.0272 0.0155.
We can see that the BER of the code is poor.The result is different from those in the author's published paper. The author of the program may have not considered the problem.

10 Mar 2009 ye ‹Š

Reply to Mr. Wilson Grey
you said
if H(M*N) can be splitted into two parts
{H1}
----
{H2}
H1 has full rank. H2 can be expressed by some rows of H1.
Then one can get G from H1. so C*transpose(H1)=0, C(1*N) is any code word generated by G. Because H2 can be expressed by some rows of H1. So C*transpose(H2)=0.
So any codeword C*H=0
can this algorithm solve the problem which the parity check H is singular
since H1 is nonsingular why not use H1 instead of H

Please login to add a comment or rating.
Updates
10 Jul 2008

The previous version construct a code even when it failed to find a row satifying the desired distance. In the new version the algoirthm quits when it fails. Extra conditions are added to avoid eight-cycles.

Tag Activity for this File
Tag Applied By Date/Time
coding theory Gabofetswe Malema 22 Oct 2008 09:42:17
information theory Gabofetswe Malema 22 Oct 2008 09:42:17
girth Gabofetswe Malema 22 Oct 2008 09:42:17
qcldpc Gabofetswe Malema 22 Oct 2008 09:42:17
rate Gabofetswe Malema 22 Oct 2008 09:42:17
communications Gabofetswe Malema 22 Oct 2008 09:42:17
coding Gabofetswe Malema 22 Oct 2008 09:42:17
information technology Gabofetswe Malema 22 Oct 2008 09:42:17

Contact us at files@mathworks.com