Non è chiaro come intendi caricare più files: vuoi caricarne uno ogni volta che premi il "pushbutton"?
La matrice "
varP2" nella quale carichi il contenuto del file è una
variabile locale; la sua "
visibilità" (il suo "
scope") è limitato alla funzione nella quale viene definita e viene "cancellata" al termine dell'esecuzione della funzione.
Per conservare il valore della variabile puoi memorizzarla all'interno dei "
guidata" della tua GUI.
Per fare questo devi usare la funzione "gudata"
Dovendo gestire più files, devi identificare la modalità con la quale gestire i dati letti.
Una possibilità potrebbe essere definire un vettore di strutture con, per esempio, due campi: "filename" e "data".
Nel primo potresti salvare il nome del file dal quale hai estratto il dati, nel secondo i dati letti dal file.
Per fare questo puoi inizializzare un contatore (che servirà per indirizzare il vettore di strutture) e e la struttura nella funzione "
OpeningFcn".
Quindi, nella callback associata al pushbutton, carichi i dati letti all'interno della struttura ed incrementi il contatore.
Di seguito, un esempio della funziione "OpeningFcn" e del contenuto della callback associata al pushbutton.
OpeningFcn
% --- Executes just before read_data_file is made visible.
function XXX_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to read_data_file (see VARARGIN)
% Choose default command line output for read_data_file
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes read_data_file wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% Acquisizione dei dati dalla GUI
gui_data=guidata(gcf)
% Inizializzazione del contatore e della vettore di strutture
gui_data.file_cnt=0;
gui_data.data_struct(1).file_name='';
gui_data.data_struct(1).data=[];
% Memorizzazione dei dati nella GUI
guidata(gcf,gui_data)
Pushbutton callback
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Acquisizione dei dati dalla GUI
gui_data=guidata(gcf);
file_cnt=gui_data.file_cnt;
data_struct=gui_data.data_struct;
[file_name,file_path]=uigetfile('*.txt','Selazione file')
if(file_name ~= 0)
filename=fullfile(file_path,file_name)
in_data=dlmread(filename)
% Incremento del contatore
file_cnt=file_cnt+1;
% Assegnazione dei dati allo i-esimo elemento del vettore di strutture
data_struct(file_cnt).file_name=filename;
data_struct(file_cnt).data=in_data;
% Salvataggio dei dati nella GUI
gui_data.file_cnt=file_cnt;
gui_data.data_struct=data_struct
guidata(gcf,gui_data);
end
Un consiglio: per la generazione del nome completo del file di input, usa la funzione "
fullfile"
Hope this helps.