Information
Theory

Spring 2017
course
navigation

Mar 28

Begin discussion of ideas from chapter 8 : Linear Codes
"adding" and "multiplying" code words :
A "linear code" : make code words by "adding" together other codewords.
Getting codewords from a matrix of column basis vectors
The "E for encoding" matrix :
1 0 0 E = 0 1 0 0 0 1 1 1 0 0 1 1 1 0 1
Data words are (000, 001, ... 111).
Then we get code words by matrix multiplication!
E * [ 0 ] = [ 0 ] [ 1 ] [ 1 ] [ 1 ] [ 1 ] [ 1 ] [ 0 ] [ 1 ] 5x3 * 3x1 = 5 x 1
For one error correcting codes, after the message is sent, we multiply on the left by the check matrix H , which gives 0 if the message has no errors.
The executive summary of the notation and procedure is :
k = bits in a "block" of data so 2**k data words which will call "x" n = bits in error-correcting codewords, n > k ( y ) so 2**n code words which we'll call "y" ρ = information rate = k / n δ = minimum hamming distance between codewords {C} = set of codewords , with |C| = number of codewords = 2**k The C linear code is a subspace of the 2**n codes+errors. C is k-dimensional. E is (n x k = rows x columns) encoding matrix : y = E x where |y| = n, |x| = k H is (n-k x n) check matrix, H y = 0 We can confirm that a word y has no errors when H y = 0 When there *is* an error, for 1-error correcting codes, then (H y) tells us where the error is!
The "cannonical" form for E and H is
E = [ I ] H = [ A I' ] [ A ]
where
I is k x k identity matrix, I' is (n-k) x (n-k) identity matrix A is (n-k) x k 2-ones-per-column, no two the same
Magic!
(I mistakenly claimed earlier that A must have linearly independent columns - that's incorrect.)
Make sure you understand what the variables are, the dimensions of the various matrices, and what they're used for.
Section 8.4 gives a simple recipe for building 1-error correcting codes using these building blocks.

The text is *very* mathish in chapter 8, but see if you can get the gist of the procedure by looking at the examples.
There is some very cool linear algebra and group theory going on behind the scenes here which is making all this work ... which we will discuss to see if we can make sense of some of the ideas.
The ideas here use two slightly different math notions:
Here are some starting points for the mathish stuff for those interested.
Some more of the math technical terms :

The upshot set of all codewords (with and without errors) can be broken into neighborhoods (cosets) which have the same value ("syndrome") when multiplied by the check matrix. These neighborhoods are also the little circles in our previous arguments about the packing bounds, namely a message without an error and those 1 bit flip away (for 1 error correcting codes.)
Examples will hopefully illuminate what's going on.
http://cs.marlboro.edu/ courses/ spring2017/info/ notes/ Mar_28
last modified Wednesday March 29 2017 11:29 pm EDT