Input da più Files.txt

di il
2 risposte

Input da più Files.txt


Salve a tutti, avrei il seguente problema. Devo importare più file di dati in formati txt da una GUI, mediante bottone ad es.

function FAE_Callback(hObject, eventdata, handles)
% hObject handle to FAE (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[FileName2,PathName2] = uigetfile('*.txt','Seleziona file');

pathfile2 = joinseq (PathName2,FileName2)
varP2 = dlmread (pathfile2)
Ho replicato il codice.
Ho notato che che durante l'esecuzione del codice viene salvato solo l'ultimo file in memoria e non i precedenti.
Dove sbaglio?

Grazie a chi vorrà darmi delle delucidazioni.

2 Risposte

  • Re: Input da più Files.txt

    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.
  • Re: Input da più Files.txt

    Grazie mille della risposta. Adesso dò un'occhiata e procedo.
    Alla domandla risposta è sì.
    La mia necessità è di caricare un file ogni volta che premo lo specifico bottone e di gestirli contemporanenamente.

    Grazie di nuovo.
Devi accedere o registrarti per scrivere nel forum
2 risposte