Â
from operator import xor
import numpy as np
print("\n\n(7,4) Linear Block Code Generation with generator matrix in PI format.\nTherefore first 4 bits are data bits.\n")
gx = np.array([[1, 0, 0, 0, 1, 1, 0], [0, 1, 0, 0, 0, 1, 1],
[0, 0, 1, 0, 1, 1, 1], [0, 0, 0, 1, 1, 0, 1]])
print("\nThe Generator Matrix is: \n\n", gx)
d = np.array([[0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 1, 1],
[0, 1, 0, 0], [0, 1, 0, 1], [0, 1, 1, 0], [0, 1, 1, 1],
[1, 0, 0, 0], [1, 0, 0, 1], [1, 0, 1, 0], [1, 0, 1, 1],
[1, 1, 0, 0], [1, 1, 0, 1], [1, 1, 1, 0], [1, 1, 1, 1]])
print("\nThe Data Matrix is: \n\n", d)
print("\nThe Codeword Matrix is: \n")
i = 1
for i in range(16):
C = np.array([xor(xor(d[i][3], d[i][2]), d[i][0]), xor(xor(d[i][0], d[i][1]), d[i][2]), xor(
xor(d[i][2], d[i][1]), d[i][3]), d[i][0], d[i][1], d[i][2], d[i][3]])
print(C)
m = np.dot(d, gx)
count = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(16):
for j in range(7):
if m[i][j] == 2 or m[i][j] == 4:
m[i][j] = 0
if m[i][j] == 1 or m[i][j] == 3:
m[i][j] = 1
count[i] = count[i]+1
dmin = min(count[1:])
errd = dmin - 1
errc = errd/2
print("\nMinimum Hamming Distance is: ", dmin, "\nError Detection Capacity = ",
errd, "\nError Correction Capacity = ", int(errc),"\n\n")
#ENJOY CODING
Post a Comment
FOR ANY DOUBTS AND ERRORS FEEL FREE TO ASK. YOUR DOUBTS WILL BE ADDRESSED ASAP