La cosa più semplice che puoi fare è utilizzare una serie di "flag" per controllare (tramite blocchi "if-else") la lettura dei files.
Quando usi la funzione "uigetfile" sarebbe meglio chiamarla con due parametri di output per ricevere il none del file ed il path.
In questo caso potresti utilizzare la funzione "fullfile" per creare il nome completo (path + nome) del file.
Per la selezione tra più opzioni puoi usare un blocco "switch".
I commenti all'interno del codice dovrebbero fornire ulteriori dettagli.
%%%%%%%%%%%%%%%%%%%%%%%%% INIZIA IL PROGRAMMA CON WHILE PER LOOP -FC %%%%%%%%%%%%%%
% input3=1;
% Define tha array of flag to control the file reading
read_me=ones(1,4)
% Define the flag to control the main loop
go_on=1
while(go_on)
%%%%%%%%%%%%%%%%%%%%%%%%% END INIZIA IL PROGRAMMA CON WHILE PER LOOP -FC %%%%%%%%%%%%%%
%%% Spettri in imaging
fprintf('\n Per l''analisi dello spettro, è necessario utilizzare gli spettri delle basi e lo spettro da analizzare\n');
fprintf('\n Scegliere i files dati diamante, grafite e fullerene \n');
% If the corresponding flag is set to 1
if(read_me(1))
% Then read the file and reset the flag
inputdiamdiff=uigetfile({'*.txt';'*.dat'},'Sceglere il file spettro del diamante');
diamdiff=load(inputdiamdiff);
read_me(1)=0
end
% If the corresponding flag is set to 1
if(read_me(2))
% Then read the file and reset the flag
inputgrafdiff=uigetfile({'*.txt';'*.dat'},'Sceglere il file spettro della grafite');
grafdiff=load(inputgrafdiff);
read_me(2)=0
end
% If the corresponding flag is set to 1
if(read_me(3))
% Then read the file and reset the flag
inputfuldiff=uigetfile({'*.txt';'*.dat'},'Sceglere il file spettro del fullerene');
fuldiff=load(inputfuldiff);
read_me(3)=0
end
% If the corresponding flag is set to 1
if(read_me(4))
% Then read the file and reset the flag
fprintf('\n Scegliere il files dati da analizzare \n');
inputspetdiff=uigetfile({'*.txt';'*.dat'},'Sceglere il file spettro da analizzare');
spetdiff=load(inputspetdiff);
read_me(4)=0
end
% TUTTO IL RESTO DEL PROGRAMMA
%%%%%%%%%%%%%%%%%%%%%%%%% ACQUISIZIONE PER LOOP -FC %%%%%%%%%%%%%%
% input3=0;
% while input3~=1 && input3~=2
% fprintf('Se si desidere analizzare un altro spettro, per chiudere premere 2 \n');
% Define the flag to control the inner loop
sel_option=0
while(~sel_option)
disp('Se si desidera analizzare un altro spettro, selezionare:')
disp('1 - per ricaricare tutti e 4 i files')
disp('2 - per ricaricare solo l''ultimo file')
disp(' ')
disp('0 Se si desidera uscire:')
input3=input('Scelta= ');
% Use a "switch" block to perform a multi case selection
switch(input3)
case 1
fprintf('Hai scelto di analizzare un altro spettro \ncaricando tutti e 4 i files');
read_me=ones(1,4)
sel_option=1
case 2
fprintf('Hai scelto di analizzare un altro spettro \ncaricando solo l''ultimo file');
read_me(4)=1
sel_option=1
case 0
fprintf('Fine \n');
sel_option=1
go_on=0
otherwise
fprintf('Scelta non corretta! Ripetere la scleta \n');
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%% END ACQUISIZIONE PER LOOP -FC %%%%%%%%%%%%%%
Detto questo, potresti / dovresti aggiungere dei controlli, nella sezione di lettura dei files, per gestire il caso nel quale l'utente seleziona "Annulla" in "uigetfile".
Per rendere la selezione delle opzioni al termine del programma più semplice, invece di usare la funzione "input", potresti creare una finestra di "dialogo" con "questdlg"