A prescindere dal fatto di riuscire a risolvere il problema del nome delle variabili e dei files, sinceramente mi riesce sempre più difficile capire cosa effettivamente debba fare il programma che si vuole scrivere.
Nell'ultima domanda si legge che anche il numero dei files da importare può variare.
Cosa contengono i files?
Sono dati che dovranno essere "uniti" per creare, ad esempio, un'unica matrice?
I nomi dei files contengono qualche indicazione sul loro contenuto?
In caso di selezione multipla, la funzione uigetfile ritorna la lista dei files selezionati ordinati alfabeticamente a prescindere, quindi, dall'ordine con il quale sono stati selezionati.
Se il resto del programma è già stato scritto, questo userà delle variabili che dovrebbero contenere i dati letti, ma come vengono gestiti il fatto che i dati letti (le matrici) nel caso specifico, possono essere tre oppure due (nel caso, ad esempio che si leggano - come riportato nella domanda - "a volte A B C, a volte B C")?
Per poter risolvere definitivamente il problema dell'importazione serve che venga pubblicata la descrizione del programma o il programma stesso in modo da capire come assegnare i nomi alle variabili ed associarli ai nomi dei files.
Per il momento quello che si può fare, ma non credo sarà di molta utilità, è modificare il codice che è stato proposto nella precedente risposta, come segue:
all'interno del loop di lettura viene creato un vettore di strutture ("data_struct") con due campi:
- mat: contenente la matrice letta dal file di testo
- f_name: stringa che contiene il nome del file di testo dal quale è stata letta la matrice "mat"
La struttura può essere usata (ad esempio in un ciclo for) per ricercare uno specifico nome di file; se trovato, si avrà a disposizione la relativa matrice.
Come detto sopra, però, senza ulteriori informazioni su:
- cosa contengono i files di testo (nel senso di che tipo di dati e che relazione c'è tra i diversi files)
- in che modo il programma deve operare sui dati, una volta letti: quindi descrizione del programma o listato dello stesso
dubito di poter fare altro.
file=uigetfile('*.txt','Multiselect','on');
%
% Codice aggiunto per gestire la selezione del tasto "Annulla"
%
if(isequal(file,0))
disp('Selezione files annullata dall''utente')
else
n=length(file);
for i=1:n
%
% Codice originale
%
%%%%%%%%% dati(i)=char(file(i));
%
% Codice modificato: lettura dei files di testo e creazione nel
% workspace di una variabile di tipo "struct" con due campi:
% - mat: contiene la matrice letta dal file di testo
% - f_name: stringa che contiene il nome del file di testo dal
% quale è stata letta la matrice "mat"
%
data_struct(i).mat=load(char(file(i)));
data_struct(i).f_name=char(file(i));
end
end
Hope this helps.