O matrice de matrice în programarea computerelor este o structură de date care deține o altă matrice la fiecare index. Aceasta înseamnă că datum la fiecare adresă secvenţială din tabloul de nivel superior este de fapt primul element de referinţă al fiecărei sub-matrice. La rândul său, fiecare sub-matrice poate fi, de asemenea, o matrice de matrice, permițând imbricarea matricelor cât de profund este necesar. Deși conceptul ar putea părea complex, există de fapt notații de declarare și dereferențiere foarte simple care permit ca o matrice de matrice să fie exprimată foarte clar în interiorul unui program. Una dintre cele mai comune utilizări pentru o matrice de matrice este stocarea informațiilor într-un model de grilă, așa cum poate fi cazul unei imagini.
O matrice este o serie de elemente de date care, în majoritatea limbajelor de programare, este stocată în locații consecutive de memorie. Datele deținute într-o matrice se numesc element și fiecare element ocupă o poziție în matrice cunoscută sub numele de index. Începutul unui tablou este indicele zero, următorul este indicele unu și așa mai departe. În loc să dețină numere întregi sau caractere, o matrice de matrice deține o altă matrice completă la fiecare index. Aceste sub-matrice de la fiecare index pot deține ele însele și matrice, oferind capacitatea de a crea structuri complexe de date asemănătoare arborelui, după cum este necesar.
Una dintre utilizările obișnuite pentru o matrice de matrice este de a stoca informații care pot fi indexate dintr-o grilă cu coordonate de coloană și rând. Aceasta poate fi folosită pentru a reprezenta date pe o foaie de calcul, o imagine bidimensională (2D) care urmează să fie afișată pe un ecran sau chiar o tablă de șah. Matrice de matrice cu adâncime de trei niveluri, adică o matrice care conține matrice care dețin un al treilea nivel de matrice, pot fi utilizate pentru a reprezenta informații într-un cub sau pot fi folosite pentru a reprezenta o matrice de informații în care fiecare locație are mai multe atribut. În general, matricele de matrice care sunt mai adânci de trei niveluri nu sunt utilizate, deoarece aceeași funcționalitate poate fi implementată mai simplu prin utilizarea unei matrice de structuri sau clase.
Notația de programare pentru o matrice de matrice este mult mai ușor de descifrat decât s-ar putea aștepta. Majoritatea limbajelor de programare folosesc paranteze pentru a indica indexul unei matrice, iar o matrice multidimensională nu este diferită, cu excepția faptului că se adaugă un set suplimentar de paranteze pentru a indexa sub-matrice. De exemplu, o matrice unidimensională ar putea fi scrisă ca „matrice[2]” pentru a desemna elementul din a doua locație a indexului matricei. O matrice de matrice ar putea fi scrisă într-un mod similar — array[ 2 ][ 1 ] — care indică elementul de referință din primul index al celui de-al doilea tablou.