Creazione di tabelle e assegnazione dei relativi dati
Le tabelle sono adatte per i dati orientati alle colonne, come i dati tabellari provenienti da file di testo o fogli di calcolo. Le tabelle memorizzano le colonne di dati in variabili. Le variabili in una tabella possono avere tipi di dati diversi, sebbene tutte le variabili debbano avere lo stesso numero di righe. Comunque, le variabili della tabella non sono limitate alla memorizzazione dei soli vettori colonna. Ad esempio, una variabile della tabella può contenere una matrice con più colonne purché abbia lo stesso numero di righe delle altre variabili della tabella.
In MATLAB® è possibile creare tabelle e assegnare loro dei dati in diversi modi.
Creare una tabella da array di input utilizzando la funzione
table
.Aggiungere variabili a una tabella esistente utilizzando la notazione a punto.
Assegnare le variabili a una tabella vuota.
Pre-allocare una tabella e inserire i dati in un secondo momento.
Convertire le variabili in tabelle utilizzando le funzioni
array2table
,cell2table
ostruct2table
.Leggere una tabella da un file utilizzando la funzione
readtable
.Importare una tabella utilizzando lo strumento Importa.
La scelta dipende dalla natura dei dati e dal modo in cui si intende utilizzare le tabelle nel codice.
Creazione di tabelle da array di input
È possibile creare una tabella dagli array utilizzando la funzione table
. Ad esempio, creare una piccola tabella con i dati relativi a cinque pazienti.
Per prima cosa, creare sei array di dati orientati alle colonne. Questi array hanno cinque righe perché sono relativi a cinque pazienti. (La maggior parte di questi array è costituita da vettori colonna 5x1, mentre BloodPressure
è una matrice 5x2).
LastName = ["Sanchez";"Johnson";"Zhang";"Diaz";"Brown"]; Age = [38;43;38;40;49]; Smoker = [true;false;true;false;true]; Height = [71;69;64;67;64]; Weight = [176;163;131;133;119]; BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
Creare ora una tabella patients
, come contenitore per i dati. In questa chiamata alla funzione table
, gli argomenti di input utilizzano i nomi delle variabili del workspace per i nomi delle variabili in patients
.
patients = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
patients=5×6 table
LastName Age Smoker Height Weight BloodPressure
_________ ___ ______ ______ ______ _____________
"Sanchez" 38 true 71 176 124 93
"Johnson" 43 false 69 163 109 77
"Zhang" 38 true 64 131 125 83
"Diaz" 40 false 67 133 117 75
"Brown" 49 true 64 119 122 80
La tabella è una tabella 5x6 perché contiene sei variabili. Come mostra la variabile BloodPressure
, una variabile della tabella può contenere a sua volta più colonne. Questo esempio mostra perché le tabelle sono composte da righe e variabili, anziché da righe e colonne.
Aggiunta di una variabile a una tabella utilizzando la notazione a punto
Una volta creata una tabella, è possibile aggiungere una nuova variabile in qualsiasi momento utilizzando la notazione a punto. La notazione a punto fa riferimento alle variabili della tabella in base al nome T.varname
, dove T
è la tabella e varname
è il nome della variabile. Questa notazione è simile a quella utilizzata per accedere ai dati e assegnarli ai campi di una struttura.
Ad esempio, aggiungere una variabile BMI
a patients
. Calcolare l'indice di massa corporea, o IMC, utilizzando i valori riportati in patients.Weight
e patients.Height
. Assegnare i valori IMC a una nuova variabile della tabella.
patients.BMI = (patients.Weight*0.453592)./(patients.Height*0.0254).^2
patients=5×7 table
LastName Age Smoker Height Weight BloodPressure BMI
_________ ___ ______ ______ ______ _____________ ______
"Sanchez" 38 true 71 176 124 93 24.547
"Johnson" 43 false 69 163 109 77 24.071
"Zhang" 38 true 64 131 125 83 22.486
"Diaz" 40 false 67 133 117 75 20.831
"Brown" 49 true 64 119 122 80 20.426
Assegnazione di variabili a una tabella vuota
Un altro modo per creare una tabella è quello di iniziare con una tabella vuota e assegnarle delle variabili. Ad esempio, creare nuovamente la tabella dei dati dei pazienti ma, questa volta, assegnare le variabili utilizzando la notazione a punto.
Per prima cosa, creare una tabella vuota patients2
, richiamando table
senza argomenti.
patients2 = table
patients2 = 0×0 empty table
Quindi, creare una copia dei dati dei pazienti assegnando delle variabili. I nomi delle variabili della tabella non devono corrispondere ai nomi degli array, come mostrato dalle variabili delle tabelle Name
e BP
.
patients2.Name = LastName; patients2.Age = Age; patients2.Smoker = Smoker; patients2.Height = Height; patients2.Weight = Weight; patients2.BP = BloodPressure
patients2=5×6 table
Name Age Smoker Height Weight BP
_________ ___ ______ ______ ______ __________
"Sanchez" 38 true 71 176 124 93
"Johnson" 43 false 69 163 109 77
"Zhang" 38 true 64 131 125 83
"Diaz" 40 false 67 133 117 75
"Brown" 49 true 64 119 122 80
Pre-allocazione della tabella e riempimento delle righe
A volte le dimensioni e i tipi di dati che si desidera memorizzare in una tabella sono noti, ma si intende assegnare i dati in un secondo momento. Magari si prevede di aggiungere solo poche righe alla volta. In tal caso, può essere più efficiente pre-allocare lo spazio nella tabella e quindi assegnare i valori alle righe vuote.
Ad esempio, per pre-allocare lo spazio per una tabella che contenga le letture di tempo e temperatura in diverse stazioni, utilizzare la funzione table
. Anziché fornire gli array di input, specificare le dimensioni e i tipi di dati delle variabili della tabella. Per assegnare dei nomi alle variabili, specificare l'argomento 'VariableNames'
. La pre-allocazione riempie le variabili della tabella con valori predefiniti appropriati per i rispettivi tipi di dati.
sz = [4 3]; varTypes = ["double","datetime","string"]; varNames = ["Temperature","Time","Station"]; temps = table('Size',sz,'VariableTypes',varTypes,'VariableNames',varNames)
temps=4×3 table
Temperature Time Station
___________ ____ _________
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
0 NaT <missing>
Un modo per assegnare o aggiungere una riga a una tabella è quello di assegnare un array di celle a una riga. Se l'array di celle è un vettore riga e i suoi elementi corrispondono ai tipi di dati delle rispettive variabili, l'assegnazione converte l'array di celle in una riga della tabella. Tuttavia, utilizzando gli array di celle, è possibile assegnare solo una riga alla volta. Assegnare i valori alle prime due righe.
temps(1,:) = {75,datetime('now'),"S1"}; temps(2,:) = {68,datetime('now')+1,"S2"}
temps=4×3 table
Temperature Time Station
___________ ____________________ _________
75 13-Jul-2025 18:48:15 "S1"
68 14-Jul-2025 18:48:15 "S2"
0 NaT <missing>
0 NaT <missing>
In alternativa, è possibile assegnare le righe di una tabella più piccola a una tabella più grande. Con questo metodo, è possibile assegnare una o più righe alla volta.
temps(3:4,:) = table([63;72],[datetime('now')+2;datetime('now')+3],["S3";"S4"])
temps=4×3 table
Temperature Time Station
___________ ____________________ _______
75 13-Jul-2025 18:48:15 "S1"
68 14-Jul-2025 18:48:15 "S2"
63 15-Jul-2025 18:48:15 "S3"
72 16-Jul-2025 18:48:15 "S4"
È possibile utilizzare entrambe le sintassi per aumentare le dimensioni di una tabella assegnando righe oltre la fine della tabella. Se necessario, le righe mancanti vengono riempite con valori predefiniti.
temps(6,:) = {62,datetime('now')+6,"S6"}
temps=6×3 table
Temperature Time Station
___________ ____________________ _________
75 13-Jul-2025 18:48:15 "S1"
68 14-Jul-2025 18:48:15 "S2"
63 15-Jul-2025 18:48:15 "S3"
72 16-Jul-2025 18:48:15 "S4"
0 NaT <missing>
62 19-Jul-2025 18:48:15 "S6"
Conversione delle variabili in tabelle
È possibile convertire le variabili che hanno altri tipi di dati in tabelle. Gli array di celle e le strutture sono altri tipi di contenitori che possono memorizzare array con tipi di dati diversi. In questo modo è possibile convertire gli array di celle e le strutture in tabelle. È inoltre possibile convertire un array in una tabella le cui variabili contengono colonne di valori provenienti dall'array. Per convertire questo tipo di variabili, utilizzare le funzioni array2table
, cell2table
o struct2table
.
Ad esempio, convertire un array in una tabella utilizzando array2table
. Poiché gli array non hanno nomi di colonna, la tabella presenta nomi di variabili predefiniti.
A = randi(3,3)
A = 3×3
3 3 1
3 2 2
1 1 3
a2t = array2table(A)
a2t=3×3 table
A1 A2 A3
__ __ __
3 3 1
3 2 2
1 1 3
È possibile fornire nomi personalizzati per le variabili della tabella utilizzando l'argomento nome-valore "VariableNames"
.
a2t = array2table(A,"VariableNames",["First","Second","Third"])
a2t=3×3 table
First Second Third
_____ ______ _____
3 3 1
3 2 2
1 1 3
Lettura della tabella dal file
È normale avere una grande quantità di dati tabellari in un file, come in un file CSV (valori separati da virgola) o in un foglio di calcolo Excel®. Per leggere tali dati in una tabella, utilizzare la funzione readtable
.
Ad esempio, il file CSV outages.csv
è un file di esempio distribuito con MATLAB. Il file contiene i dati relativi a una serie di interruzioni dell'alimentazione elettrica. La prima riga di outages.csv
contiene i nomi delle colonne. Il resto del file contiene i valori separati da virgole per ciascuna interruzione. Le prime righe sono riportate qui di seguito.
Region,OutageTime,Loss,Customers,RestorationTime,Cause SouthWest,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,winter storm SouthEast,2003-01-23 00:49,530.1399497,212035.3001,,winter storm SouthEast,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,winter storm West,2004-04-06 05:44,434.8053524,340371.0338,2004-04-06 06:10,equipment fault MidWest,2002-03-16 06:18,186.4367788,212754.055,2002-03-18 23:23,severe storm ...
Per leggere outages.csv
e memorizzare i dati in una tabella, è possibile utilizzare readtable
. Questa funzione legge valori numerici, date e ore, nonché stringhe nelle variabili della tabella che presentano tipi di dati appropriati. In questo caso, Loss
e Customers
sono array numerici. Le variabili OutageTime
e RestorationTime
sono array datetime
in quanto readtable
riconosce i formati data e ora del testo presente in quelle colonne del file di input. Per leggere il resto dei dati di testo negli array di stringhe, specificare l'argomento nome-valore "TextType"
.
outages = readtable("outages.csv","TextType","string")
outages=1468×6 table
Region OutageTime Loss Customers RestorationTime Cause
___________ ________________ ______ __________ ________________ _________________
"SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm"
"SouthEast" 2003-01-23 00:49 530.14 2.1204e+05 NaT "winter storm"
"SouthEast" 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 "winter storm"
"West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault"
"MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 "severe storm"
"West" 2003-06-18 02:49 0 0 2003-06-18 10:54 "attack"
"West" 2004-06-20 14:39 231.29 NaN 2004-06-20 19:16 "equipment fault"
"West" 2002-06-06 19:28 311.86 NaN 2002-06-07 00:51 "equipment fault"
"NorthEast" 2003-07-16 16:23 239.93 49434 2003-07-17 01:12 "fire"
"MidWest" 2004-09-27 11:09 286.72 66104 2004-09-27 16:37 "equipment fault"
"SouthEast" 2004-09-05 17:48 73.387 36073 2004-09-05 20:46 "equipment fault"
"West" 2004-05-21 21:45 159.99 NaN 2004-05-22 04:23 "equipment fault"
"SouthEast" 2002-09-01 18:22 95.917 36759 2002-09-01 19:12 "severe storm"
"SouthEast" 2003-09-27 07:32 NaN 3.5517e+05 2003-10-04 07:02 "severe storm"
"West" 2003-11-12 06:12 254.09 9.2429e+05 2003-11-17 02:04 "winter storm"
"NorthEast" 2004-09-18 05:54 0 0 NaT "equipment fault"
⋮
Importazione della tabella utilizzando lo strumento Importa
È inoltre possibile, in modo interattivo, visualizzare in anteprima e importare i dati da fogli di calcolo o file di testo delimitati utilizzando lo strumento Importa. Esistono due modi per aprire lo strumento Importa.
Barra degli strumenti di MATLAB: nella scheda Home, nella sezione Variable (Variabile), fare clic su Import Data (Importa dati).
Prompt dei comandi di MATLAB: inserire
uiimport(
filename
)
, dovefilename
è il nome di un file di testo o di un foglio di calcolo.
Ad esempio, aprire il file di esempio outages.csv
utilizzando uiimport
e which
per ottenere il percorso del file.
uiimport(which("outages.csv"))
Lo strumento Importa mostra un'anteprima delle sei colonne da outages.csv
. Per importare i dati come tabella, seguire questi passaggi.
Nella sezione Imported Data (Dati importati), selezionare Table (Tabella) come tipo di output.
Fare clic su Import Selection (Importa selezione) (vicino all'angolo superiore destro). La nuova tabella, denominata
outages
, viene visualizzata nel workspace.
Vedi anche
Funzioni
readtable
|table
|array2table
|cell2table
|struct2table