def __init__(self, K, glist): self.K = K # constraint length self.nstates = 2**(K-1) # number of states in state machine # number of parity bits transmitted for each message bit print glist self.r = len(glist) # States are named using (K-1)-bit integers in the range 0 to # nstates-1. The bit representation of the integer corresponds # to state label in the transition diagram. So state 10 is # named with the integer 2, state 00 is named with the # integer 0. # for each state s, figure out the two states in the diagram # that have transitions ending at state s. Record these two # states as a two-element tuple. self.predecessor_states = \ [((2*s+0) % self.nstates,(2*s+1) % self.nstates) for s in xrange(self.nstates)] # this is a 2D table implemented as a list of lists. # self.expected_parity[s1][s2] returns the r-bit sequence # of parity bits the encoder transmitted when make the # state transition from s1 to s2. self.expected_parity = \ [[PS3_tests.expected_parity(s1, s2, K, glist) \ if s1 in self.predecessor_states[s2] else None for s2 in xrange(self.nstates)] for s1 in xrange(self.nstates)]
def __init__(self, K, glist): self.K = K # constraint length self.nstates = 2**(K-1) # number of states in state machine # number of parity bits transmitted for each message bit self.r = len(glist) # States are named using (K-1)-bit integers in the range 0 to # nstates-1. The bit representation of the integer corresponds # to state label in the transition diagram. So state 10 is # named with the integer 2, state 00 is named with the # integer 0. # for each state s, figure out the two states in the diagram # that have transitions ending at state s. Record these two # states as a two-element tuple. self.predecessor_states = \ [((2*s+0) % self.nstates,(2*s+1) % self.nstates) for s in xrange(self.nstates)] # this is a 2D table implemented as a list of lists. # self.expected_parity[s1][s2] returns the r-bit sequence # of parity bits the encoder transmitted when make the # state transition from s1 to s2. self.expected_parity = \ [[PS3_tests.expected_parity(s1, s2, K, glist) \ if s1 in self.predecessor_states[s2] else None for s2 in xrange(self.nstates)] for s1 in xrange(self.nstates)]