Contenuto principale

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 o struct2table.

  • 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), dove filename è 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.

  1. Nella sezione Imported Data (Dati importati), selezionare Table (Tabella) come tipo di output.

  2. Fare clic su Import Selection (Importa selezione) (vicino all'angolo superiore destro). La nuova tabella, denominata outages, viene visualizzata nel workspace.

importToolOutages.png

Vedi anche

Funzioni

App

Argomenti