Dinamična matrika je podatkovna struktura, ki se uporablja v računalniškem programiranju, ki vsebuje več računalniških objektov kot eno skupino in ji je mogoče poljubno spremeniti velikost, da se prilagodi različnim številom objektov. Skupina je shranjena v enem samem sosednjem bloku pomnilnika, zato je dostop do elementov učinkovit in hiter. Dinamični nizi se imenujejo tudi vektorji ali seznami, odvisno od računalniškega jezika, v katerem se uporabljajo. Kljub tem imenom kateri koli določen seznam ali vektor morda ni dinamična matrika, saj se seznami in vektorji lahko izvajajo drugače kot matrike in drug od drugega.
C++ vsebuje en sam dinamični razred matrike, imenovan vektor, ki se nahaja v skupini razredov, imenovanih standardna knjižnica predlog. Do matrike, ki podpira ta razred, lahko dostopajo iteratorji ali indeksi. Njegova zmožnost spreminjanja velikosti na zahtevo je velika prednost, vendar lahko programerje zvabi v lažni občutek varnosti, ker ni tako robusten, kot se zdi. Dinamična matrika, ki podpira vektor, ne more zagotoviti, da so zahteve za dostop veljavne. Tako kot statični nizi imajo lahko tudi dinamični nizi težave s preverjanjem meja in poškodbami pomnilnika, če program poskuša dostopati do pomnilnika, ki jim ni bil dodeljen.
Java vsebuje tri različne dinamične razrede matrik: Vector, ArrayList in CopyOnWriteArrayList. Do elementov v matriki dostopajo samo indeksi in poskus dostopa do indeksov zunaj matrike običajno ne bo povzročil težav s poškodovanjem pomnilnika. Razred Java Vector je približno enak vektorskemu razredu C++ in ni sinhroniziran, da bi omogočil dostop več niti. ArrayList in CopyOnWriteArrayList pa sta nasprotno varna niti. Od teh treh je CopyOnWriteArrayList najbolj delovno intenziven razred, saj popolnoma poustvari dinamično matriko vsakič, ko se v matriko zapiše nova vrednost.
Dinamični nizi se izvajajo v bistvu na enak način, ne glede na uporabljeni računalniški jezik, vendar so glede na določen jezik lahko na vrhu tega zgrajene druge zmogljivosti. Tako kot statični nizi tudi dinamični nizi ne omejujejo vrste predmeta, ki se lahko shrani v njih, če so vsi objekti iste vrste. Programerju nikoli ni treba neposredno dostopati do dinamičnega niza; to je vedno mogoče narediti prek razreda, ki ovije matriko za enostavno uporabo. Pravilna uporaba teh nizov lahko pomaga programerju pri organizaciji podatkov znotraj kode in tudi pri ustvarjanju razumljive kode, ki je primerna za enostavno vzdrževanje.