Per automatizzare la lettura di file che abbiano la radice del nome comune ("anno_" nel caso specifico della domanda) seguito da un indice numerico (possibilmente incrementale, ma, comunque, almeno definibile tramite un algoritmo) è sufficiente codificare un loop che:
[*] costruisca una stringa contenente il nome del file concatenando la radice del nome del file all'indice del loop (o, all'indice definito dall'algoritmo per la numerazione dei files)
[*] invochi la funzione built-in "load" fornendo ad essa, in input, da stringa contenente il nome del file, costruita al passo precedente
come nell'esempio che segue il quale legge i 3 files: "file_da_leggere_1", "file_da_leggere_2", "file_da_leggere_3":
radice_nome_file='file_da_leggere_';
for i=1:3
file_name=[radice_nome_file num2str(i)]
load(file_name)
end
All'interno dello script dovrebbero essere inseriti dei controlli per verificare, come minimo l'esistenza dei files che si vogliono leggere.
La stessa tecnica (costruzione del nome del file e suo passaggio a funzioni di MatLab) può essere utilizzata, per esempi per verificare il contenuto di un file ".mat".
Nello script che segue sono illustrati alcuni esempi.
*********
******* DISCLAIMER **********
*********
ATTENZIONE!!! LA PRIMA PARTE DELLO SCRIPT GENERA 5 MATRICI CHE VENGONO SUCCESSIVAMENTE SALVATE IN FILES CON LA RADICE DEL NOME "file_prova_con_matrice_"
PRIMA DEL SALVATAGGIO SU FILE ".MAT" VIENE VERIFICATO SE IL FILE ESISTA GIA' E, NEL CASO VIENE GENERATO UN ERRORE ED IL SALVATAGGIO NON VIENE EFFETTUATO.
SI FACCIA COMUNQUE ATTENZIONE NELL'EVENTUALE UTILIZZO DELLO SCRIPT, ALLA DEFINIZIONE DEI NOMI DEI FILES
*********
%
% Creazione di cinque matrici di esempio
%
for i=1:5
eval(['m_' num2str(i) '=magic(3)*i*10;'])
end
%
% Definizione della radice del nome dei files ".mat"
%
radice_nome_file='file_prova_con_matrice_';
%
% Definizione del numero di files ".mat" da caricare
%
numero_files_mat=5;
%
% Salvataggio delle cinque matrici nei cinque files
% file_prova_con_matrice_1.mat file_con_matrice_2.mat
% file_con_matrice_3.mat file_prova_con_matrice_4.mat
% file_con_matrice_5.mat
%
for i=1:numero_files_mat
fname=[radice_nome_file num2str(i) '.mat'];
if(~exist(fname,'file'))
save(fname,['m_' num2str(i)])
else
error(['Il file ' fname ' esiste già'])
end
end
%
% Cancellazione delle cinque matrici dal workspace (per verificare
% successivamente l'effettivo loro caricamento
%
for i=1:numero_files_mat
clear(['m_' num2str(i)])
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Creazione del nome dei files ".mat" da caricare
%
file_set=cell(1,numero_files_mat);
for i=1:numero_files_mat
file_set{i}=[radice_nome_file num2str(i) '.mat'];
end
%
% Verifica dell'esistenza dei files ".mat"
%
for i=1:numero_files_mat
disp(['Verifica del file: ' file_set{i}])
if(exist(file_set{i},'file'))
which(file_set{i})
else
disp(['Errore: file "' file_set{i} '" non trovato'])
end
disp(' ');
end
disp(' ');
%
% Verifica del contenuto dei files ".mat": la descrizione del contenuto di
% ogni file viene memorizzata nella "struct" "file_cont"
%
for i=1:numero_files_mat
if(exist(file_set{i},'file'))
disp(['Contenuto del file ' file_set{i} ':'])
file_cont(i)=whos('-file',[radice_nome_file num2str(i) '.mat']);
str=sprintf('Nome variabile= %s dimensione = (%s)',file_cont(i).name,num2str(file_cont(i).size));
disp(str)
disp(' ');
else
disp(['Errore: file "' file_set{i} '" non trovato'])
end
end
disp(' ');
%
% Caricamento delle matrici dai files ".mat"
%
for i=1:numero_files_mat
if(exist(file_set{i},'file'))
disp(['Caricamento del file ' radice_nome_file num2str(i) '.mat'])
load([radice_nome_file num2str(i)])
else
disp(['Errore: file "' file_set{i} '" non trovato'])
end
end
disp(' ');
%
% Verifica dell'avvenuto corretto caricamento delle matrici
%
str_1='Sono state caricate le seguenti matrici:';
str_2='';
for i=1:numero_files_mat
if(exist(file_set{i},'file'))
res(i)=whos(file_cont(i).name);
str_2=[str_2 ', ' res(i).name];
else
disp(['Errore: file "' file_set{i} '" non trovato'])
end
end
disp([str_1 str_2])
Hope this helps.