def CreateEncoderMatrix(self): self.encoderMatrix = genericmatrix.GenericMatrix( (self.n, self.k), 0, 1, self.field.Add, self.field.Subtract, self.field.Multiply, self.field.Divide) self.encoderMatrix[0, 0] = 1 for i in range(0, self.n): term = 1 for j in range(0, self.k): self.encoderMatrix[i, j] = term term = self.field.Multiply(term, i)
def PrepareDecoder(self, unErasedLocations): """ Function: PrepareDecoder(erasedTerms) Description: The input unErasedLocations is a list of the first self.k elements of the codeword which were NOT erased. For example, if the 0th, 5th, and 7th symbols of a (16,5) code were erased, then PrepareDecoder([1,2,3,4,6]) would properly prepare for decoding. """ if (len(unErasedLocations) != self.k): raise ValueError('input must be exactly length k') limitedEncoder = genericmatrix.GenericMatrix( (self.k, self.k), 0, 1, self.field.Add, self.field.Subtract, self.field.Multiply, self.field.Divide) for i in range(0, self.k): limitedEncoder.SetRow( i, self.encoderMatrix.GetRow(unErasedLocations[i])) self.decoderMatrix = limitedEncoder.Inverse()