Per creare una struttura con un numero di campi definito in base al valore di una variabile, puoi sfruttare la funzionalità del "dynamic field".
In pratica, puoi definire i nomi dei campi (e quindi il numero degli stessi) partendo da una stringa "base" ed aggiungendovi, per esempio, un valore numerico progressivo, oppure, avendo a disposizione i diversi nomi dei campi, direttamente quelli.
https://it.mathworks.com/help/matlab/matlab_prog/generate-field-names-from-variables.html
Ad esempio, definendo come stringa base "matrice_numero_" ed avendo "numero_matrici=3":
stringa_base='matrice_numero_'
numero_matrici=3
for i=1:numero_matrici
my_struct.([stringa_base num2str(i)])=[]
end
ottieni la struct "my_struct" con i tre campi:
matrice_numero_1 = [](0x0)
matrice_numero_2 = [](0x0)
matrice_numero_3 = [](0x0)
rappresentati da una matrice vuota che potrai "riempire" con tuoi datti.
Lavorando con le strutture con nomi dei campi "dinamici", puoi utilizzare le funzioni "getfields", fieldnames" ecc. () per accedere in modo altrettanto dinamico ai campi ed ai loro contenuti.
In alternativa puoi utilizzare delle matrici a 3 dimensioni "m(d1 x d2 x d3) dove una delle tre dimensioni corrisponde a "numero matrici".
In questo caso le n matrici devono avere tutte lo stesso numero di righe e colonne.
Un'ulteriore possibilità, simile alla precedente, consiste nell'utilizzare dei "cellarray".
La scelta tra le varie alternative dipende da come generi i dati delle matrici e come li vuoi utilizzare.