DSPRelated.com
Forums

Repeat Accumulate Code

Started by Crisanquito September 15, 2009
Hi

Could anyone tell me how I can obtain the check parity matrix of a repeat
accumulate code, given a certain repetition rate and an interleaving?

I am thinking of getting if from the generator matrix, and use gen2par
function in Matlab, but there should be a direct way. Can anyone help me?

Thanks in advance
Crisanquito <crisancost@hotmail.com> wrote:

>Could anyone tell me how I can obtain the check parity matrix of a repeat >accumulate code, given a certain repetition rate and an interleaving? > >I am thinking of getting if from the generator matrix, and use gen2par >function in Matlab, but there should be a direct way. Can anyone help me?
Since nobody has answered: That is the most direct way. (Folks, correct me if I'm wrong.) Steve
>Crisanquito <crisancost@hotmail.com> wrote: > >>Could anyone tell me how I can obtain the check parity matrix of a
repeat
>>accumulate code, given a certain repetition rate and an interleaving? >> >>I am thinking of getting if from the generator matrix, and use gen2par >>function in Matlab, but there should be a direct way. Can anyone help
me?
> >Since nobody has answered: > >That is the most direct way. > >(Folks, correct me if I'm wrong.) > >Steve >
Thank you for the answer. My question is related to LDPC codes and the sum product algorithm. I have implemented the sum product algorithm for a given parity check matrix, but I am finding that the repeat accumulate codes are described by the generalized parity check matrix (I am not 100% sure about this last thing), for which: GeneralizedParityCheckMatrix=[H1 H2], where H1 is given by the repetition and permutation stages and H2 is a bidiagonal matrix. If this is correct, my problem now is to implement the sum product algorithm for a given GPCM.

On Sep 16, 5:10&#4294967295;am, "Crisanquito" <crisanc...@hotmail.com> wrote:
> >Crisanquito <crisanc...@hotmail.com> wrote: > > >>Could anyone tell me how I can obtain the check parity matrix of a > repeat > >>accumulate code, given a certain repetition rate and an interleaving? > > >>I am thinking of getting if from the generator matrix, and use gen2par > >>function in Matlab, but there should be a direct way. Can anyone help > me? > > >Since nobody has answered: > > >That is the most direct way. > > >(Folks, correct me if I'm wrong.) > > >Steve > > Thank you for the answer. My question is related to LDPC codes and the sum > product algorithm. I have implemented the sum product algorithm for a given > parity check matrix, but I am finding that the repeat accumulate codes are > described by the generalized parity check matrix (I am not 100% sure about > this last thing), for which: > > GeneralizedParityCheckMatrix=[H1 H2], where H1 is given by the repetition > and permutation stages and H2 is a bidiagonal matrix. > > If this is correct, my problem now is to implement the sum product > algorithm for a given GPCM.
You can always use sum-product algorithm to decode, the problem is performance and complexity. As its' name suggests, ldpc code is low density parity check code. and sum product algorithm works well (in terms complexity and performance) when the parity matrix is sparse. I do not know if the repeat accumulate code satisfies the property, if it does, I believe you can use it.
Repeat Accumulate and Irregular Repeat Accumpulate code are a particular
class of LDPC codes (for exemple see
http://www.google.fr/url?sa=t&source=web&ct=res&cd=6&url=http%3A%2F%2Fsigpromu.org%2Freports%2FEE05045.pdf&ei=08K7St6eOc3OjAe-7KzWCw&usg=AFQjCNHHX7oUrgrbiodGbIMBubYDJnqGuQ&sig2=FHny_yhzjgLNxsSFWJTNsQ).


There is many way to decode this class of code. As you mentionned, you can
describe the code by the parity check matrix and then apply the Belief
Propagation algorithm (or sub optimal algorithm like min sum for exemple
see page 98
http://tel.archives-ouvertes.fr/docs/00/27/83/46/ANNEX/Defense_PhD_Dore.pdf).
It is also possible to see the RA code as a concatenation of parity check
codes and a convolutional code (accumulator code )... but it is not simple
to explain in few lines... 

JB

 
In the context of repeat accumulate codes, I have already implemented the
sum product algorithm when the Tanner graph is composed of bit and check
nodes. Nevertheless, I see that RA are described by a Tanner graph with
check, parity bit and message bit nodes. How the algorithm works with these
three kind of nodes?

Thanks
On Oct 1, 5:31=A0am, "Crisanquito" <crisanc...@hotmail.com> wrote:
> In the context of repeat accumulate codes, I have already implemented the > sum product algorithm when the Tanner graph is composed of bit and check > nodes. Nevertheless, I see that RA are described by a Tanner graph with > check, parity bit and message bit nodes. How the algorithm works with the=
se
> three kind of nodes? > > Thanks
You model the decoder as a "soft inverse" of the encoder. In a repeat- accumulate code, the parity bits are generated by repeating each information bit a specific number of times, interleaving the bits, then passing the repeated bits into an accumulator. The output of the accumulator is then optionally punctured to generate the parity bits. Instead of mapping out the parity-check matrix for a specific block size, puncturing pattern, etc., the decoder is structured with blocks that implement the inverse of each of the operations in the transmitter. You can then use belief propagation (e.g. via min-sum processing in the log-probability domain) to exchange information between the various blocks iteratively until you're satisfied with the solution. The decoder will have check nodes for all bits that are expected to be the same (i.e. the bits that were repeated in the encoder), a deinterleaver to undo the interleaving in the encoder, and an inverse of the accumulator. The accumulator can be modeled by a (very simple) finite state machine, which can be soft-decoded via the BCJR (a.k.a. forward-backward) algorithm. A similar decoder structure can be used to decode turbo codes, which are similar. Jason
>On Oct 1, 5:31=A0am, "Crisanquito" <crisanc...@hotmail.com> wrote: >> In the context of repeat accumulate codes, I have already implemented
the
>> sum product algorithm when the Tanner graph is composed of bit and
check
>> nodes. Nevertheless, I see that RA are described by a Tanner graph
with
>> check, parity bit and message bit nodes. How the algorithm works with
the=
>se >> three kind of nodes? >> >> Thanks > >You model the decoder as a "soft inverse" of the encoder. In a repeat- >accumulate code, the parity bits are generated by repeating each >information bit a specific number of times, interleaving the bits, >then passing the repeated bits into an accumulator. The output of the >accumulator is then optionally punctured to generate the parity bits. >Instead of mapping out the parity-check matrix for a specific block >size, puncturing pattern, etc., the decoder is structured with blocks >that implement the inverse of each of the operations in the >transmitter. You can then use belief propagation (e.g. via min-sum >processing in the log-probability domain) to exchange information >between the various blocks iteratively until you're satisfied with the >solution. The decoder will have check nodes for all bits that are >expected to be the same (i.e. the bits that were repeated in the >encoder), a deinterleaver to undo the interleaving in the encoder, and >an inverse of the accumulator. The accumulator can be modeled by a >(very simple) finite state machine, which can be soft-decoded via the >BCJR (a.k.a. forward-backward) algorithm. > >A similar decoder structure can be used to decode turbo codes, which >are similar. > >Jason >
Thank you very much Jason. If I am not wrong, the accumulator can be decoded by the BCJR, as you say, and also with the sum product algorithm, being the parity check matrix of the accumulator a dual diagonal matrix. It is a question of running it in a two phase fashion, one for the repetition and interleaving and another for the accumulator.
On Tuesday, 15 September 2009 12:55:31 UTC+5:30, Crisanquito  wrote:
> Hi > > Could anyone tell me how I can obtain the check parity matrix of a repeat > accumulate code, given a certain repetition rate and an interleaving? > > I am thinking of getting if from the generator matrix, and use gen2par > function in Matlab, but there should be a direct way. Can anyone help me? > > Thanks in advance
can you send me the code for repeat accumulate
On Tuesday, 15 September 2009 12:55:31 UTC+5:30, Crisanquito  wrote:
> Hi > > Could anyone tell me how I can obtain the check parity matrix of a repeat > accumulate code, given a certain repetition rate and an interleaving? > > I am thinking of getting if from the generator matrix, and use gen2par > function in Matlab, but there should be a direct way. Can anyone help me? > > Thanks in advance