What, exactly, don't you understand about that example?
Did you actually apply MatrixForm
to the results? I thought doing that makes evident what ArrayFlatten
is doing here.
To spell things out for this example, which starts with what you may think of as a 2-by-3 matrix each of whose entries is a 2-by-2 matrix: The result of evaluating ArrayFlatten
upon it produces what you may think of as a new matrix each of whose entries is a single number rather than a matrix; in the original "matrix" there was a total of 4 rows in the matrix elements, 2 rows from the 1st row of the big matrix, and 2 more rows from the 2nd row of the big matrix; the entries of the 1st row of the result are the successive entries from the first rows of the first row of matrices of the big matrix, etc.