示例#1
0
	def encode(self, U):
		k = U.shape[1]
		V = np.zeros((len(U), len(self.pm)), int)
		V[:,:k] = U
		for i in range(len(V)):
			V[i] = gf.polyadd(V[i], gf.polydiv(V[i], self.g, self.pm)[1])
		return V
示例#2
0
 def encode(self, U):
     k = U.shape[1]
     n = self.pm.shape[0]
     result = np.empty((U.shape[0], n), int)
     for i, u in enumerate(U):
         result[i] = np.hstack((u, np.zeros(n - k)))
         result[i] = gf.polyadd(result[i],
                                gf.polydiv(result[i], self.g, self.pm)[1])
     return result
示例#3
0
 def encode(self, U):
     mesg_cnt, k = U.shape
     
     x_m = np.zeros(self.m + 1).astype('int')
     x_m[0] = 1
     
     V = np.zeros((mesg_cnt, self.n)).astype('int')
     for i in range(mesg_cnt):
         u = U[i, :]
         
         x_m_prod_u = gf.polyprod(x_m, u, self.pm)
         div, mod = gf.polydivmod(x_m_prod_u, self.g, self.pm)
         
         v = gf.polyadd(x_m_prod_u, mod)
         ind = self.n - v.shape[0]
         V[i, ind:] = gf.polyadd(x_m_prod_u, mod)
     
     return V
示例#4
0
 def _encode(self, u):
     assert self.n - (self.g.shape[0] - 1) == u.shape[0]
     x_power = np.zeros_like(self.g, dtype=np.int)
     x_power[0] = 1
     x_power_u = gf.polyprod(x_power, u, self.pm)
     _, mod = gf.polydivmod(x_power_u, self.g, self.pm)
     result = gf.polyadd(x_power_u, mod)
     result = np.concatenate(
         [np.zeros([self.n - result.shape[0]], dtype=np.int), result])
     return result
示例#5
0
 def encode(self, U):
     n = self.pm.shape[0]
     m = self.g.shape[0] - 1
     x = np.zeros(m + 1, dtype=np.int64)
     x[0] = 1
     res = np.zeros((U.shape[0], U.shape[1] + m), dtype=np.int64)
     for i in range(U.shape[0]):
         u = U[i]
         code = gf.polyprod(x, u, self.pm)
         _, mod = gf.polydivmod(code, self.g, self.pm)
         code = gf.polyadd(code, mod)
         len_code = code.shape[0]
         res[i][-len_code:] = code
     return res
示例#6
0
文件: bch.py 项目: maloyan/Algebra
 def encode(self, U):
     # res = x^m * u(x) - (x^m * u(x)) mod g(x)
     #       |________|    |________|
     #           ^             ^
     #           |             |
     #           s      +      s       mod g(x)
     message_number, k = U.shape
     m = self.g.size - 1
     x_m = np.zeros(m + 1, dtype=int)
     x_m[0] = 1
     res = np.zeros((message_number, k + m), dtype=int)
     for i in range(message_number):
         s = gf.polyprod(x_m, U[i, :], self.pm)
         mod = gf.polydiv(s, self.g, self.pm)[1]
         tmp = gf.polyadd(s, mod)
         res[i, -tmp.size:] = tmp.copy()
     return res