Is Viterbi decoding of Punctured Convolutional Codes the same as that of Convolutional Codes?
I wrote code for viterbi decoding of Convolutional Codes (with rate 1/2) but I want to make a 4/7-rate Punctured Convolutional Codes from this. Encoding is just puncturing unnecessary bits, but how is the decoding?
Moving a comment to an answer, as no one else wanted to add anything.
It is very easy to modify the Viterbi decoding algorithm to accommodate erasures. You use the trellis of the original convolutional code. You simply treat the punctured bits as unknown (=erased) bits that are at Hamming distance 1/2 from both 0 and 1. Or, if your channel model is AWGN as opposed to BSC, then you should treat the punctured bits as being at the midpoint between 0=+1 and 1=−1 (or whatever signal levels they were mapped to). If you use LLRs, then the log-likelihood ratio of a punctured bit should be set to zero reflecting complete uncertainty.
Alternatively you can ignore the erased positions altogether, as all the path penalties are affected equally, so an erasure will not have an impact on the decision. Of course, you still take into account the other bits on the output label of every edge.