In
coding theory, a systematic code is any
error-correcting code
In computing, telecommunication, information theory, and coding theory, an error correction code, sometimes error correcting code, (ECC) is used for controlling errors in data over unreliable or noisy communication channels. The central idea is ...
in which the input data is embedded in the encoded output. Conversely, in a non-systematic code the output does not contain the input symbols.
Systematic codes have the advantage that the parity data can simply be appended to the source block, and receivers do not need to recover the original source symbols if received correctly – this is useful for example if error-correction coding is combined with a hash function for quickly determining the correctness of the received source symbols, or in cases where errors occur in
erasures and a received symbol is thus always correct. Furthermore, for engineering purposes such as synchronization and monitoring, it is desirable to get reasonable good estimates of the received source symbols without going through the lengthy decoding process which may be carried out at a remote site at a later time.
Properties
Every non-systematic linear code can be transformed into a systematic code with essentially the same properties (i.e., minimum distance).
Because of the advantages cited above,
linear error-correcting codes are therefore generally implemented as systematic codes. However, for certain decoding algorithms such as sequential decoding or maximum-likelihood decoding, a non-systematic structure can increase performance in terms of undetected decoding error probability when the minimum ''free'' distance of the code is larger.
For a systematic
linear code, the
generator matrix,
, can always be written as