Galois Field Computation in MATLAB
Galois Field Computation in MATLAB
Primitive Polynomial:
An Irreducible polynomial p(X) of degree m is said to be primitive if the
smaller positive integer n for which p(X) divides Xn + 1 is n = 2m – 1. For
example, p(X) = X4 + X + 1 divides X15 +1 but not divides any Xn +1 for
1 ≤ n < 15.
In Matlab you can easily find the primitive polynomials for any degree
using primpoly(m) function.
Example:
m= 4; Define m = 4 for GF(24)
s = primpoly(m)
Output is:
Primitive polynomial(s) =
D^4+D^1+1
s =
19
Example:
X = gftuple(11,4);
Y= gftuple(14,4);
0 1 1 1
Y =
1 0 0 1
In Matlab you can do any Galois Field arithmetic using gf() function.
Example:
X = gf(6,4) % first argument is integer equivalent of tuple
% representation and 2nd argument is degree m
Y = gf(13,4)
Z = X + Y
Array elements =
Array elements =
13
Z = GF(2^4) array. Primitive polynomial = D^4+D+1 (19 decimal)
Array elements =
11
Minimal polynomials
Example:
m = 4;
e = gf(6,4);
em = minpol(e) %Find minimal polynomial of e. em is in
%GF(2^m)
em = GF(2) array.
Array elements =
0 0 1 1 1
emr = GF(2^4) array. Primitive polynomial = D^4+D+1 (19
decimal)
Array elements =
9
11
13
14
g(X) = LCM{ Ф1(X), Ф3(X), Ф5(X), Ф7(X)…… Ф2t-1(X)} where Фi(X) are the
minimal polynomials.
Now for m = 4, we can calculate the generator polynomial for (15, 11),
(15, 7) and (15, 5) BCH codes as following:
g1(X) = Ф1(X) for (15, 11) BCH code, t = 1
g2(X) = LCM{ Ф1(X), Ф3(X)} for (15, 7) BCH code, t = 2
g3(X) = LCM{ Ф1(X), Ф3(X), Ф5(X)} for (15, 5) BCH code, t = 3
Example:
genpoly1 = bchgenpoly(15,11)
genpoly2 = bchgenpoly(15,7)
Array elements =
1 0 0 1 1
Array elements =
1 1 1 0 1 0 0 0 1
Now you can shift this generator polynomial using circshift() command
to create the generator matrix and encode the message block by block.