Ci sono diversi modi per concatenare in modo automatico delle matrici; molto dipende dal "nome" delle matrici.
Nello script in calce ci sono tre esempi a seconda che:
[1] il nome delle matrici contenga un indice progressivo (es.: m1, m2, m3, ...)
[2] il nome delle matrici non contenga un indice progressivo, ma che l'ordine sia dato dall'ordine alfabetico dei nomi delle matrici (es.: a_mat, b_mat, c_mat, ...)
[3] caso più generale; il nome delle matrici non contiene un indice progressivo e non si può utilizzare l'ordine alfabetico. In questo caso la sequenza di concatenazione delle matrici deve essere specificata "a mano".
%
% Generazione matrici di esempio
%
m1=ones(3,2);
m2=ones(3,2)*2;
m3=ones(3,2)*3;
m4=ones(3,2)*4;
%
% Se le matrici da concatenare hanno un nome con un indice progressivo
%
M=[];
for i=1:4
eval(['M=[M;m' num2str(i) '];']);
end
%
% Se le matrici hanno nomi senza un relazinoe particolare (se hanno un nome
% "qualunque"
%
%
% Cancellare tutti i dati dal workspace (gli altri dati necessari
% all'esecuzione del programma possono essere caricati in un secondo
% momento
%
clear all
%
% Caricare nel workspace solo le matrici che si vogliono concatenare
%
matrice_1=ones(3,2);
seconda_matrice=ones(3,2)*2;
un_altra_matrice=ones(3,2)*3;
ultima_matrice=ones(3,2)*4;
%
% Il comando "whos" restituisce l'elenco delle variabili presenti nel
% workspace, in questo caso solo le matrici che si vogliono concatenare
% L'elenco delle matrici da concatenare è salvato alla'interno della
% struttura "lista_mat". In questo caso l'elenco delle matrici nella lista
% viene creato automaticamente "in ordine alfabetico
%
list_mat=whos;
%
% Se si vogliono concatenare le matrici in un ordine diverso da quello
% alfabetico, si può costruire una lista delle matrici "ad hoc"
%
%
% Numero delle matrici da concatenare
%
n_mat=length(list_mat);
%
% Loop per la concatenazione delle matrici; ad ogni iterazione il nome
% della matrice da concatenare è estratto dala struttura "lisa_mat" ed
% assegnato alla variabile stringa "nome_mat".
%
M=[];
for i=1:n_mat
name_mat=list_mat(i).name
eval(['M=[M;' name_mat '];'])
end
%
% Se si vogliono concatenare le matrici in un ordine diverso da quello
% alfabetico, si può costruire una lista delle matrici "ad hoc" ad esempiio
% usando un cell array
%
n_mat=1;
my_lista_mat{n_mat}='ultima_matrice';
n_mat=n_mat+1;
my_lista_mat{n_mat}='un_altra_matrice';
n_mat=n_mat+1;
my_lista_mat{n_mat}='matrice_1';
n_mat=n_mat+1;
my_lista_mat{n_mat}='seconda_matrice';
%
% Loop per la concatenazione delle matrici; ad ogni iterazione il nome
% della matrice da concatenare è estratto dala struttura "lisa_mat" ed
% assegnato alla variabile stringa "nome_mat".
%
M=[];
for i=1:n_mat
eval(['M=[M; ' my_lista_mat{i} ']'])
end
Hope this helps.