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?

  • 2
    $\begingroup$ The usual rule is one question per post. $\endgroup$ Feb 28 '16 at 20:41
  • $\begingroup$ Hello, I thought of making the parts as separate questions. The independent meanings can easily be found online. However, I feel it is much more beneficial to whoever reads the question and answers to see how these topics specifically interweave with one another. This way, one can get the whole picture in one post, will still being succinct. $\endgroup$
    – Jonathan
    Feb 28 '16 at 21:04
  • $\begingroup$ This question is too broad. This site doesn't work well for multiple questions in a single post. (Also your second question might be too broad ("merits and demerits of...").) I will edit out the 2nd and 3rd question; please feel free to post them separately, with all necessary context. You can find them in the revision history, for ease of copy-paste. $\endgroup$
    – D.W.
    Feb 29 '16 at 7:20

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.

  • $\begingroup$ Can you also give an example of a code that has memory? $\endgroup$
    – Jonathan
    Mar 24 '16 at 22:06
  • $\begingroup$ @JonathanSmit, if you have a follow-up question, you should post a new question (after doing research/self-study). But it sounds like you already know of an example, based on the last sentence of the first paragraph of your question. $\endgroup$
    – D.W.
    Mar 24 '16 at 22:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.