np.linalg.matrix_rank

np.linalg.matrix_rank(x)[source]

Returns the rank of a Galois field matrix.

References

Examples

In [1]: GF = galois.GF(31)

In [2]: A = GF.Identity(4); A
Out[2]: 
GF([[1, 0, 0, 0],
    [0, 1, 0, 0],
    [0, 0, 1, 0],
    [0, 0, 0, 1]], order=31)

In [3]: np.linalg.matrix_rank(A)
Out[3]: 4

One column is a linear combination of another.

In [4]: GF = galois.GF(31)

In [5]: A = GF.Random((4,4)); A
Out[5]: 
GF([[ 0,  4,  5, 22],
    [ 5, 25,  4, 16],
    [ 3,  8, 13, 12],
    [13, 23,  7, 29]], order=31)

In [6]: A[:,2] = A[:,1] * GF(17); A
Out[6]: 
GF([[ 0,  4,  6, 22],
    [ 5, 25, 22, 16],
    [ 3,  8, 12, 12],
    [13, 23, 19, 29]], order=31)

In [7]: np.linalg.matrix_rank(A)
Out[7]: 3

One row is a linear combination of another.

In [8]: GF = galois.GF(31)

In [9]: A = GF.Random((4,4)); A
Out[9]: 
GF([[14, 29, 21, 17],
    [26, 27,  1,  4],
    [ 6, 18, 19, 22],
    [18, 19, 10,  6]], order=31)

In [10]: A[3,:] = A[2,:] * GF(8); A
Out[10]: 
GF([[14, 29, 21, 17],
    [26, 27,  1,  4],
    [ 6, 18, 19, 22],
    [17, 20, 28, 21]], order=31)

In [11]: np.linalg.matrix_rank(A)
Out[11]: 3