Il messaggio di errore è dovuto al fatto che vuoi assegnare il contenuto della variabile "Nome" che è un cellarray contenente una stringa alla variabile "table" inizializzata come vettore di numeri (tra l'altro, a parte questo problema, forse per errore, la variabile che utilizzi nel seguito per memorizzare i dati di "Caratteristiche" ha un nome diverso).
Per poter inserire in una "uitable" elementi di tipo diverso (stringhe di testo e numeri nel tuo caso) bisogna utilizzare un cellarrauy.
Lo script in calce è una versione modificata del tuo con la corretta definizione del cellarray contenente i dati da inserire nella uitable.
Nello script, per praticità, viene creata una "uitable" direttamente tramite la funzione "uitable", senza utilizzar "GUIDE") inoltre ho anche aggiunto un controllo che gestisce l'eventuale "non selezione" (tasto Annulla) del file.
Ho quindi dovuto commentare la tua istruzione con la quale assegni la variabile table1 alla uitable anche se apparentemente corretta.
Nello script ho inserito alcuni commenti che, spero, spieghino le varie modifiche.
% Creazione di una GUI di esempio
f = figure('unit','normalized','position',[.1 .1 .5 .3]);
colnames = {'Text Col.', 'Data Col. 1', 'Data Col. 2', 'Data Col. 3'};
t = uitable(f, 'ColumnName', colnames, ...
'unit','normalized','Position', [0.20 0.60 0.70 0.30]);
% Selezione del file di input
[filename, pathname] = uigetfile({'*.txt'}, 'Pick a txt file');
% Controllo sulla selezione del file di input
% Se il file non è stato selezionato visualizza un messaggio
if(filename == 0)
disp('No Input file selected')
else
% Se il file è stato selezionato, continua
filepath=fullfile(pathname,filename);
Data = importdata(filepath);
Caratteristiche=getfield(Data,'data');
Nome=getfield(Data,'textdata')
% Istruzione non necessaria
% % % Caratteristiche=Caratteristiche';
% Il parametro "Data" della uitable deve ussere un cellarray per contenere
% istruzione errata
% % % table1=zeros(1,3);
% Assegnazione della stringa di testo letta dal file al cellarray
% Il contenuto di ogni elemento del cellarray deve essere una striunga o un
% numero, "Nome" è un cellarray, quyindi deve essere convertito con la
% funzione "char" in un astringa
% table(1,1)=Nome{1,1};
table1{1,1}=char(Nome);
% table1(1,2)=Caratteristiche(1,1);
% table1(1,3)=Caratteristiche(1,2);
% table1(1,4)=Caratteristiche(1,3);
% Inserimento dei valori numerici nel cellarray dalla seconda locazione in
% poi
for i=2:length(Caratteristiche)+1
table1{1,i}=Caratteristiche(i-1);
end
% Per far sì che questo script di esempio funziioni ho dovuto modificare
% l'istruzione che segue, ma quella che hai sritto dovrebbe funzionare
% set(handles.uitable1,'Data',table1)
set(t,'Data',table1)
end
Hope this helps.
Allegati: