def crcGenMatrix(r,k): "produce G matrix of CRC-r code , Generator degree = r; able to detect r-1 burst errors" genpoly = crcGeneratorMap[r] b = [] for i in xrange(k): b.append(bin2code( poly_div(2**(r+i), genpoly), r ) ) b_array = np.array(b) # convert it to np array for matrix operation G_array = np.hstack((b_array, np.eye(k,dtype=int))) return G_array
def crcCheckMatrix(r,k): "produce corresponding H matrix for CRC-r and information length k" # if genpoly == 0: genpoly = crcGeneratorMap[r] b = [] for i in xrange(k): b.append(bin2code( poly_div(2**(r+i), genpoly), r ) ) b_array = np.array(b) # convert it to np array for matrix operation name_array = b_array.transpose() # [rxk] H_array = np.hstack( (np.eye(r, dtype=int), name_array ) ) return H_array