Because each possible vector can appear only once in a standard array some care must be taken during construction. A standard array can be created as follows: • List the codewords of C, starting with 0, as the first row • Choose any vector of minimum weight not already in the array. Write this as the first entry of the next row. This vector is denoted the '
coset leader'. • Fill out the row by adding the coset leader to the codeword at the top of each column. The sum of the i-th coset leader and the j-th codeword becomes the entry in row i, column j. • Repeat steps 2 and 3 until all rows/cosets are listed and each vector appears exactly once. Adding vectors is done mod q. For example, binary codes are added mod 2 (which equivalent to bit-wise XOR addition). For example, in Z_{2}, 11000 + 11011 = 00011. That selecting different coset leaders will create a slightly different but equivalent standard array, and will not affect results when decoding.
Construction example Let C be the
binary [4,2]-code. i.e. C = {0000, 1011, 0101, 1110}. To construct the standard array, we first list the codewords in a row. We then select a vector of minimum weight (in this case, weight 1) that has not been used. This vector becomes the coset leader for the second row. Following step 3, we complete the row by adding the coset leader to each codeword. We then repeat steps 2 and 3 until we have completed all rows. We stop when we have reached q^{n-k} = 2^{4-2} = 2^{2} = 4 rows. In this example we could not have chosen the vector 0001 as the coset leader of the final row, even though it meets the criteria of having minimal weight (1), because the vector was already present in the array. We could, however, have chosen it as the first coset leader and constructed a different standard array. == Decoding via standard array ==