I am in trouble with Viterbi decoder for a while. I have some questions.

I need to decode messages from a continuous stream which is encoded. I'm reading from book : digital communications bernard sklar second edition and the Viterbi decoder including what's called stage "ADD-COMPARE-SELECT " and I didn't understand well how it works , still confused at this stage.

there's branch metric for next possible states and for output table/metric that're related to ADD-COMPARE-SELECT stage of Viterbi decoder , could anyone please help me out and explain to me in simple words how actually ADD-COMPARE-SELECT stage of Viterbi decoder works? it would be appreciated to explain by actual example.

attachment from the book that Im reading from: enter link description here

thanks alot.


For each state in the Viterbi decoder, you want to keep track of the shortest path through the trellis that ends in that state. The trellis structure defines what all of the possible state transitions are.

Therefore, each time you get a new symbol observation, you loop through each state in your decoder and you:

  • Add the metric for each transition that ends in the state to the metric of the previous state, yielding a total metric for each state->state transition,
  • Compare the list of total metrics, and
  • Select the minimum metric as the most likely path to the current state.

The Viterbi algorithm, in this way, is really just repeated execution of this add-compare-select process, thus keeping track of the minimum-cost path to each state at any given time.

  • $\begingroup$ So If I understand you well, I need transition matrix / table? how do I implement it? $\endgroup$ – Maher Nov 17 '20 at 12:36

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.