Viterbi Decoder for Voyager code (Ling Li, Caltech, Mar 14, 2001) ---------------------------------------------------------------------- EE/Ma 127b Project 2, a Viterbi decoder for the (2,1,6,10) Voyager code. Implemented in Java. I also had an implementation in Matlab. However, without optimization, that program is really slow. ---------------------------------------------------------------------- Summary: Two channels, AWGN and BSC, are implemented in Channel.java. The idea is the same as in the project handout. The Viterbi decoder is carried out in Voyager.java. There are two decode functions, one for AWGN channel and the other for BSC. The decoding methods are the same. First we construct the trellis diagram for the Voyager code. Then use the Viterbi algorithm to find the surviving path(s). `long' is used as the register (where the surviving path is stored) and thus the decoding depth can not be larger than 63 (or 64?). The program is pretty fast. However, Java applet is slow under Linux. You may want to run it under Windows. However, don't try N larger than 500,000. It seems that the default memory limitation for Java doesn't allow that. There should be an immediate improvement if the distances are calculated once and stored in an array. ---------------------------------------------------------------------- Note: Designed by JBuilder 3.5, JDK 1.2.2; In order to be compatible with browsers using JDK 1.1, the codes corresponding to GridBagLayout was manually revised. ---------------------------------------------------------------------- This file together with the applet and its programs can be found at http://www.cs.caltech.edu/~ling/course/ee127b/proj2/