The two 2x2x2 Hadamard cubes discussed in the 3D-Hadamard Codes discussion, are the two configurations where every face creates a 2×2 Hadamard matrix. If each face does not need to be a 2×2 Hadamard matrix, then many more configurations can be defined.
In the 2x2x2 Hadamard cube, let each axis (x,y,z) be represented by a single bit. There are then 16 possible combinations of the various bits set with diagonal symmetry. The following table lists these combinations. The cubes in the table will be defined as binary Walsh matrices (using 0 and 1) rather than Hadamard matrices (using 1 and -1). This allows for easier conversion to a boolean expression.
For example, if the ones in the cube can be found at coordinate index that has 2 bits can be set, then it can be at indexes (1,1,0), (1,0,1), and (0,1,1). These are the only indexes that satisfy the requirement that 2 bits must be set in the index. This corresponds to the third entry in the table below.
Number of bits set in the coordinate containing a one (x,y,z) | Coordinates of all ones in the cube. | Binary Walsh Matrix | Boolean Definition | Notes |
0 | (0,0,0) | \begin{bmatrix} \begin{bmatrix}1&0 \\ 0&0 \end{bmatrix} \begin{bmatrix}0&0 \\ 0&0 \end{bmatrix} \end{bmatrix} | \overline{x+y+z} | |
1 | (1,0,0) (0,1,0) (0,0,1) | \begin{bmatrix} \begin{bmatrix}0&1 \\ 1&0 \end{bmatrix} \begin{bmatrix}1&0 \\ 0&0 \end{bmatrix} \end{bmatrix} | (x\oplus y\oplus z) \bullet\overline{(x\bullet y\bullet z)} | |
2 | (1,1,0) (1,0,1) (0,1,1) | \begin{bmatrix} \begin{bmatrix}0&0 \\ 0&1 \end{bmatrix} \begin{bmatrix}0&1 \\ 1&0 \end{bmatrix} \end{bmatrix} | \overline{(x\oplus y\oplus z)}\bullet (x+ y+ z) | Rotation of 1 bit set |
3 | (1,1,1) | \begin{bmatrix} \begin{bmatrix}0&0 \\ 0&0 \end{bmatrix} \begin{bmatrix}0&0 \\ 0&1 \end{bmatrix} \end{bmatrix} | x\bullet y\bullet z | Rotation of 0 bits set |
0 or 1 | (0,0,0) (1,0,0) (0,1,0) (0,0,1) | \begin{bmatrix} \begin{bmatrix}1&1 \\ 1&0 \end{bmatrix} \begin{bmatrix}1&0 \\ 0&0 \end{bmatrix} \end{bmatrix} | \overline{(x\bullet y)+(x\bullet z)+(y\bullet z)} | |
0 or 2 | (0,0,0) (1,1,0) (1,0,1) (0,1,1) | \begin{bmatrix} \begin{bmatrix}1&0 \\ 0&1 \end{bmatrix} \begin{bmatrix}0&1 \\ 1&0 \end{bmatrix} \end{bmatrix} | \overline{x\oplus y\oplus z} | |
0 or 3 | (0,0,0) (1,1,1) | \begin{bmatrix} \begin{bmatrix}1&0 \\ 0&0 \end{bmatrix} \begin{bmatrix}0&0 \\ 0&1 \end{bmatrix} \end{bmatrix} | \overline{(x+y+z)} + (x\bullet y\bullet z) | Similar to 2x2x2 Hadamard matrix in 3D-Hadamard Codes (with z axis swapped) |
1 or 2 | (1,0,0) (0,1,0) (0,0,1) (1,1,0) (1,0,1) (0,1,1) | \begin{bmatrix} \begin{bmatrix}0&1 \\ 1&1 \end{bmatrix} \begin{bmatrix}1&1 \\ 1&0 \end{bmatrix} \end{bmatrix} | (x\oplus z) +(y\oplus z) | Inverse of 0 or 3 bits set |
1 or 3 | (1,0,0) (0,1,0) (0,0,1) (1,1,1) | \begin{bmatrix} \begin{bmatrix}0&1 \\ 1&0 \end{bmatrix} \begin{bmatrix}1&0 \\ 0&1 \end{bmatrix} \end{bmatrix} | x\oplus y\oplus z | Inverse of 0 or 2 bits set |
2 or 3 | (1,1,0) (1,0,1) (0,1,1) (1,1,1) | \begin{bmatrix} \begin{bmatrix}0&0 \\ 0&1 \end{bmatrix} \begin{bmatrix}0&1 \\ 1&1 \end{bmatrix} \end{bmatrix} | (x\bullet y)+(x\bullet z)+(y\bullet z) | Inverse of 0 or 1 bits set. Alternate 2x2x2 Hadamard matrix in 3D-Hadamard Codes |
0, 1, or 2 | (0,0,0) (1,0,0) (0,1,0) (0,0,1) (1,1,0) (1,0,1) (0,1,1) | \begin{bmatrix} \begin{bmatrix}1&1 \\ 1&1 \end{bmatrix} \begin{bmatrix}1&1 \\ 1&0 \end{bmatrix} \end{bmatrix} | \overline{x\bullet y\bullet z} | Inverse of 3 bits set |
0, 1, or 3 | (0,0,0) (1,0,0) (0,1,0) (0,0,1) (1,1,1) | \begin{bmatrix} \begin{bmatrix}1&1 \\ 1&0 \end{bmatrix} \begin{bmatrix}1&0 \\ 0&1 \end{bmatrix} \end{bmatrix} | (x\oplus y\oplus z)+ \overline{(x+ y+ z)} | Inverse of 2 bits set |
0, 2, or 3 | (0,0,0) (1,1,0) (1,0,1) (0,1,1) (1,1,1) | \begin{bmatrix} \begin{bmatrix}1&0 \\ 0&1 \end{bmatrix} \begin{bmatrix}0&1 \\ 1&1 \end{bmatrix} \end{bmatrix} | \overline{(x\oplus y\oplus z)}+(x\bullet y\bullet z) | Inverse of 1 bit set |
1, 2, or 3 | (1,0,0) (0,1,0) (0,0,1) (1,1,0) (1,0,1) (0,1,1) (1,1,1) | \begin{bmatrix} \begin{bmatrix}0&1 \\ 1&1 \end{bmatrix} \begin{bmatrix}1&1 \\ 1&1 \end{bmatrix} \end{bmatrix} | x+ y+ z | Inverse of 0 bits set |
0, 1, 2, or 3 | (0,0,0) (1,0,0) (0,1,0) (0,0,1) (1,1,0) (1,0,1) (0,1,1) (1,1,1) | \begin{bmatrix} \begin{bmatrix}1&1 \\ 1&1 \end{bmatrix} \begin{bmatrix}1&1 \\ 1&1 \end{bmatrix} \end{bmatrix} | 1 | Not interesting! |
Nothing Set | \begin{bmatrix} \begin{bmatrix}0&0 \\ 0&0 \end{bmatrix} \begin{bmatrix}0&0 \\ 0&0 \end{bmatrix} \end{bmatrix} | 0 | Not interesting! |
All other possible combinations should simply be reflections or rotations of the cubes represented here. These other combinations are not listed here because they can be constructed simply by inverting the an axis or swapping axes.
We also need not concern ourselves (too much) with the inverted patterns in the table above. As higher order Hadamard-Walsh matrices are constructed, the entire lower order matrix is XORed with each element of the first order matrix. To construct a second order matrix, we must XOR the first order matrix with each element of the first order matrix. We can represent the first order matrix with “a” and value at element of the first order matrix with “b”, then the values of the inverted matrix will be “\overline a” and “\overline b“. And since \overline a\oplus \overline b = a \oplus b , the second order matrix constructed from a first order matrix is identical to the second order matrix constructed from an inverted first order matrix. However, when constructing a third order matrix, the “a” is no longer inverted but “b” is inverted. So the third order matrix will once again be completely inverted. This pattern will continue so that all even order Hadamard-Walsh matrices will be identical to those constructed using an inverted first order matrix. But all odd order Hadamard-Walsh matrices will be inverted when constructed using a inverted first order matrix.
Each of the entries will be investigated in more detail at a future date. Not all of these share the properties discussed in 3D-Hadamard Codes.