World's most popular travel blog for travel bloggers.

Convolutional and Linear block codes

, ,
Problem Detail:

Both convolution and linear block codes can be used for error correction. The main benefits I gathered from using convolutional codes is that, it's easy to implement and does better (than linear codes) in cases where you have higher error probability rates and noisy channels. Information bits are spread along the sequence. Lastly, these codes have memory.

However, linear block codes, especially the newer ones such as polar code, can actually achieve the channel capacity. And, in block codes, information bits are followed by parity bits and code information in blocks. Lastly, they are memory less.

How exactly can a noisy channel contain "memory?" I've read some articles, but would like some more clarification. Right now, I am under the impression that, if we find that an error occurs, with much higher frequency, on the 4th bit, for example, then we shall have some redundancy bit at that location, so no real information is lost. So that when we decode, we simply ignore the 4th bit. Am I right in my understanding?

A memoryless channel is one where the probability of an error at a particular bit is independent of what happened at all prior bit positions. A channel can have memory if errors are correlated across bit positions.

For instance, consider the following simple binary channel: if there was no error in the prior position, then there is a probability of 0.1 that this position and the next 7 positions are all flipped (have an error); otherwise (with probability 0.9) this position is not flipped (no error). This would be an example of a channel with memory, because the probability of error for a particular bit depends upon the location of previous errors. Slightly more generally, bursty errors are an example of a channel with errors.

Note that the question of whether the channel has memory is independent from whether the code has memory. You can use a memoryless code with a channel that has memory; or use a code with memory with a memoryless channel.