Array di strutture
Quando si dispone di dati che si desidera organizzare per nome, è possibile utilizzare delle strutture per memorizzarli. Le strutture memorizzano i dati in contenitori chiamati campi, ai quali è poi possibile accedere tramite i nomi specificati. Utilizzare la notazione a punto per creare, assegnare e accedere ai dati nei campi della struttura. Se il valore memorizzato in un campo è un array, è possibile utilizzare l'indicizzazione dell'array per accedere ai suoi elementi. Quando si memorizzano più strutture come array di strutture, è possibile utilizzare l'indicizzazione dell'array e la notazione a punto per accedere alle singole strutture e ai loro campi.
Creazione di una struttura scalare
Per prima cosa, creare una struttura denominata patient che contenga campi in cui memorizzare i dati relativi a un paziente. Il diagramma mostra come la struttura memorizza i dati. Una struttura come patient è detta anche struttura scalare in quanto la variabile memorizza una sola struttura.

Utilizzare la notazione a punto per aggiungere i campi name, billing e test, assegnando i dati a ciascun campo. In questo esempio, la sintassi patient.name crea sia la struttura che il suo primo campo. I comandi che seguono aggiungono altri campi.
patient.name = 'John Doe';
patient.billing = 127;
patient.test = [79 75 73; 180 178 177.5; 220 210 205]patient = struct with fields:
name: 'John Doe'
billing: 127
test: [3×3 double]
Accesso ai valori nei campi
Dopo aver creato un campo, è possibile continuare ad utilizzare la notazione a punto per accedere e modificare il valore che il campo memorizza.
Ad esempio, modificare il valore del campo billing.
patient.billing = 512.00
patient = struct with fields:
name: 'John Doe'
billing: 512
test: [3×3 double]
Con la notazione a punto, è inoltre possibile accedere al valore di qualsiasi campo. Ad esempio, creare un grafico a barre dei valori in patient.test. Aggiungere un titolo con il testo in patient.name. Se un campo memorizza un array, questa sintassi restituisce l'intero array.
bar(patient.test)
title("Test Results for " + patient.name)
Per accedere a una parte di un array memorizzato in un campo, aggiungere indici adeguati alle dimensioni e al tipo dell'array. Ad esempio, creare un grafico a barre dei dati in una colonna di patient.test.
bar(patient.test(:,1))

Indicizzazione a un array di strutture non scalare
Gli array di strutture possono essere non scalari. È possibile creare un array di strutture di qualsiasi dimensione, purché ogni struttura nell'array abbia gli stessi campi.
Ad esempio, aggiungere una seconda struttura a patients contenente i dati relativi a un secondo paziente. Inoltre, assegnare il valore originale di 127 al campo billing della prima struttura. Dato che l'array ora ha due strutture, è necessario accedere alla prima struttura tramite indicizzazione, come in patient(1).billing = 127.
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];
patient(1).billing = 127patient=1×2 struct array with fields:
name
billing
test
Come risultato, patient è un array di strutture 1x2 con i contenuti mostrati nel diagramma.

Ogni record paziente nell'array è una struttura di classe struct. Un array di strutture viene talvolta denominato array di struct. Comunque, i termini array di struct e array di strutture significano la stessa cosa. Come altri array di MATLAB®, un array di strutture può avere qualsiasi dimensione.
Un array di strutture presenta le seguenti proprietà:
Tutte le strutture nell'array hanno lo stesso numero di campi.
Tutte le strutture hanno gli stessi nomi di campo.
Campi con lo stesso nome in strutture diverse possono contenere dati di tipi o dimensioni differenti.
Se si aggiunge una nuova struttura all'array senza specificarne tutti i campi, i campi non specificati conterranno array vuoti.
patient(3).name = 'New Name';
patient(3)ans = struct with fields:
name: 'New Name'
billing: []
test: []
Per indicizzare a un array di strutture, utilizzare l'indicizzazione dell'array. Ad esempio, patient(2) restituisce la seconda struttura.
patient(2)
ans = struct with fields:
name: 'Ann Lane'
billing: 28.5000
test: [3×3 double]
Per accedere a un campo, utilizzare l'indicizzazione dell'array e la notazione a punto. Ad esempio, restituire il valore del campo billing per il secondo paziente.
patient(2).billing
ans = 28.5000
È inoltre possibile indicizzare a un array memorizzato tramite un campo. Creare un grafico a barre che mostri solo le prime due colonne di patient(2).test.
bar(patient(2).test(:,[1 2]))

Nota
È possibile indicizzare a una parte di un campo solo quando si fa riferimento a un singolo elemento di un array di strutture. MATLAB® non supporta dichiarazioni come patient(1:2).test(1:2,2:3), che tentano di indicizzare a un campo per più elementi dell'array di strutture. Utilizzare invece la funzione arrayfun.
Vedi anche
struct | fieldnames | isfield