# lower-rate LDPC codes

Currently I am using $(128, 64)$ LDPC codes to error correct messages wirelessly sent in Arduino using the SoftwareSerial library. I was advised to use a lower-rate LDPC code and see if that improves my error rate.

• What exactly does a lower-rate mean?
• Does it mean less parity bits or less data bits?
• For instance, would a lower rate be $(128, 96)$ or $(128, 32)$?
• Also, would using a lower-rate LDPC code combat well against deletions in the channel or just misread bits?

Lower-rate means that the rate of information bits you get through is lower, so $(128,32)$ is lower-rate than $(128,64)$.

Also, would using a lower-rate ldpc code combat well against deletions in the channel or just misread bits?

Classically, codes like these do not help against deletion; they are designed to find flipped bits; which is much more usual in digital communication channels, where the receiver has a clock that keeps running. If you had to model a deletion channel in this framework, you'd just go ahead and assume a 50% BER for all bits following (and including) the deleted bit. You could probably derive some (probably Bernoulli) distribution of how many bits are deleted per word, and when they happen, and thus calculate how many additional bit errors your code needs to be able to correct.

There's no functionality in a LDPC to guess which bits were deleted; idealized, mathematically, you're just trying to stuff $\mathbb F^{128-N_{deleted}}$ vectors into a vector space with dimensionality ${128}$. That's a bit strange.

I'm sure there's awesome math extending certain classes of channel codes to do that well, but I'm not aware of those, and my guess is that they are very complex to understand.

That's why it's usually desirable to have channel coding come directly after the physical recovery of symbols, and not after some component tried to make sense of those (aside from soft decoding gains etc).

• Hello, I don't quite understand what you mean in the 3rd paragraph. Can you please clarify why it is strange? – Christian Jul 25 '16 at 20:01
• So, codes are a reversible mapping between the vector space of info words (your case: $\mathbb F^{64}$) to the vector space of code words (your case: $\mathbb F^{128}$). Hence, the receiver sees a value from the code word space, that is not necessarily a valid code word. A good decoder now finds the "closest" (actually, the most likely to be the original) code word to that received word. But: for this, all the received symbol vectors must have the same dimensionality, in your case 128. Deletion channels really don't work well with the concept of these linear codes. – Marcus Müller Jul 25 '16 at 20:06