Una matriz de matrices en programación informática es una estructura de datos que contiene otra matriz en cada índice. Esto significa que el dato en cada dirección secuencial en la matriz de nivel superior es en realidad el primer elemento de referencia de cada submatriz. A su vez, cada submatriz también puede ser una matriz de matrices, lo que permite el anidamiento de matrices tan profundamente como sea necesario. Aunque el concepto puede parecer complejo, en realidad existen anotaciones de declaración y desreferenciación muy simples que permiten que una matriz de matrices se exprese con mucha claridad dentro de un programa. Uno de los usos más comunes de una matriz de matrices es almacenar información en un patrón de cuadrícula, como puede ser el caso de una imagen.
Una matriz es una serie de elementos de datos que, en la mayoría de los lenguajes de programación, se almacenan en ubicaciones de memoria consecutivas. El dato contenido en una matriz se llama elemento, y cada elemento ocupa una posición en la matriz conocida como índice. El comienzo de una matriz es el índice cero, el siguiente es el índice uno, y así sucesivamente. En lugar de contener números enteros o caracteres, una matriz de matrices contiene otra matriz completa en cada índice. Estas submatrices en cada índice también pueden contener matrices, lo que brinda la capacidad de crear estructuras de datos complejas en forma de árbol según sea necesario.
Uno de los usos comunes de una matriz de matrices es almacenar información que se puede indexar desde una cuadrícula con coordenadas de columna y fila. Esto se puede utilizar para representar datos en una hoja de cálculo, una imagen bidimensional (2D) que se mostrará en una pantalla o incluso un tablero de ajedrez. Matrices de matrices que tienen tres niveles de profundidad, es decir, una matriz que contiene matrices que contienen un tercer nivel de matrices, se puede usar para representar información en un cubo o se puede usar para representar una matriz de información en la que cada ubicación tiene más de una atributo. En general, las matrices de matrices que son más profundas que tres niveles no se utilizan, porque la misma funcionalidad se puede implementar de forma más sencilla mediante el uso de una matriz de estructuras o clases.
La notación de programación para una matriz de matrices es mucho más fácil de descifrar de lo que cabría esperar. La mayoría de los lenguajes de programación usan corchetes para indicar el índice de una matriz, y una matriz multidimensional no es diferente, excepto que se agrega un conjunto adicional de corchetes para indexar la submatriz. Por ejemplo, una matriz unidimensional podría escribirse como «matriz [2]» para indicar el elemento en la segunda ubicación del índice de la matriz. Una matriz de matrices se podría escribir de una manera similar – matriz [2] [1] – que indica el elemento datum en el primer índice de la segunda matriz.