I understand that for a binary linear code $C$ (n,k) code, with generator matrix $G$ ($n \times k$ matrix), two ways of finding the dual code $C^{\perp}$ (n,n-k) code are:
- Put $G$ into standard form $G=[I_{k}|A]$, where $A$ is a $k \times (n-k)$ matrix. Use this to obtain $H= [-A^{T}|I_{n-k}]$, which is the generator matrix of the dual code
- Find all the binary vectors $u$ of length $n$ such that $u.c=0$ $\forall$ $c \in C$. $U$ containing all those vectors $u$ which are orthogonal to the codewords are the elements of the dual code.
I am interested as to how this translates to a code over a finite field GF(q). I am interested specifically in GF(4). Say I have a code $C$ over $GF(4)$, again with generator matrix $G$:
- Can the dual code be obtained as before? Can we put $G$ into standard form and then find $H=[-A^{T}|I_{n-k}]$ , where the elements of $-A^{T}$ would contain the additive inverses of $A^{T}$ over GF(4)?
- Can I obtain the dual code as before by finding all of the vectors which are orthogonal to the codewords over $GF(4)$?
Do both of the above methods hold from binary to codes over finite fields? Or does this no longer make sense as methods to find the dual code over GF(q)?
Dual codes can be defined for arbitrary (not necessarily linear) codes $C$ over any finite field $F$ as the set $C^\perp$ of vectors which are orthogonal (have inner product zero) with the code $C$, as in (2).
The dual code is always linear (one can easily check that it is a subspace of $F^n$).
However one needs to assume that $C$ is linear in order to define $C^\perp$ as being generated by the $H$ you give in (1) which can be done over any finite field. This is because a nonlinear code does not have a generator matrix. Also, in general $C \subset (C^\perp)^\perp$ while this relationship is a set equality if $C$ is linear.
You can see Jon Hall's notes, for example.