Я пытаюсь реализовать кодер Хемминга для моего класса цифровых коммуникаций, и я не уверен, как это сделать без циклов. Я хочу сделать следующее:
- Взять каждую строку из d и умножить матрицу на G , чтобы получить соответствующий вектор строки.
- XOR каждого результирующего вектора строки, чтобы получить вектор кодового слова c.
- Вставьте c в битовый поток кодовых слов, I_kwcs.
Вот где я нахожусь:
def hamming_encoder(Ik):
"""
Inputs:
Ik: Message Bits assume array length is integer divisible by 4
Outputs
Ikcws : Message bits in code words, first dimension is 1
"""
#n = 7, k = 4, m=n-k = 3
G = np.array([[1,0, 0, 0, 1, 0, 1],[0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 0, 1, 1, 0], [0, 0, 0, 1, 0, 1, 1]])
# G = k x n matrix
elements_in_Ik = len(Ik)
y = elements_in_Ik // 4 # y = number of data words
d = Ik.reshape(y, 4) #d = matrix of y, 4-bit words