This toolbox can handle simple operations (+,-,*,/,.*,./,inv) of GF(p^n) for any p and n. Examples are given below (also documented in gf_test.m).
If you find any bug or have any concern/comment, please contact me.
% setup path
% create gf class of 3^2
% Eg. 1
a=[2 1;1 0]
% compute rank
% compute inverse
inva = gf9.inv(a)
% Check inverse
% matrix divide
% Eg. 2
b=[1 2 1;1 0 1];
c=[1 1 0;2 1 1];
% compute summation
% compute subtraction
% compute dot multiplication
% compute dot division
% output the primitive polynomial
gf9.return_primitive_polynomial % x^2 + 1
% show polynomial representation
gf9.return_poly_representation(5) % x + 2
% Eg. 3
% manipulating polynomials.
a=[1 2 1 1];
b=[1 3 1];
Samuel Cheng (2020). A toolbox for simple finite field operation (https://www.mathworks.com/matlabcentral/fileexchange/32872-a-toolbox-for-simple-finite-field-operation), MATLAB Central File Exchange. Retrieved .
when i try run the code there are problem in rank function
and what is mean obj
@Valentina's comments, I have added functions for multiplying and dividing polynomials.
I'm trying to use this code to perform some AES operations... What I need is e.g. to define a polynomial which can have a max degree = 7, with coefficients 0 and 1. (i.e., over GF(2)), and then compute its inverse modulo a poly of degree 8, again with binay coeffs. I can't figure out how to declare the gf, which in your example is gf9=gf(3,2); and then how do i define the poly? what does the 2 line matrix in your example mean, a=[2 1;1 0]?
Added new functionality to manipulate polynomials.
Oops, found two silly bugs. First, an error check condition was corrected.
Second, I guess it is probably the safest to run a separate script to setup path and so I extracted that part out.