Strutture dati
Una struttura dati, in Matlab struct è un gruppo di variabili, anche di tipo diverso, aggregate insieme con un unico nome .
Il nome può essere pensato come al nome di un archivio, le variabili possono invece essere pensate come i cassetti dell'archivio.
Le struct assomigliano ai vettori, ma a differenza di questi le variabili non sono ordinate e possono essere anche di tipo diverso.
Per definire una struct si usa il comando struct la cui sintassi è:
s = struct('nome variabile 1',valore 1,'nome variabile 2',valore 2,...,'nome variabile n',valore n);
per esempio, per creare una struttura che contiene alcune le informazioni di un libro si può scrivere:
>> libro = struct('titolo','Arrampicare',...
'autore','Mauro Corona',...
'editore','Solferino',...
'numeroPagine',62,...
'annoPubblicazione',2022)
libro =
struct with fields:
titolo: 'Arrampicare'
autore: 'Mauro Corona'
editore: 'Solferino'
numeroPagine: 62
annoPubblicazione: 2022
L’accesso o l’assegnazione di un valore di un campo di uno struct avviene mediante la notazione con il punto, nome_struct.nome_campo. Ad esempio, per assegnare un valore ad un campo:
>> libro.numeroPagine = 65
libro =
struct with fields:
titolo: 'Arrampicare'
autore: 'Mauro Corona'
editore: 'Solferino'
numeroPagine: 65
annoPubblicazione: 2022
Per leggere un valore di un campo invece:
>> str = libro.titolo
str =
'Arrampicare'
L'utilizzo delle strutture è utile quando è necessario impacchettare dati eterogenei in un'unica entità. Un esempio tipico è la chiamata a funzioni passando un solo argomento di tipo struct.
Una volta definita, una struttura si comporta come una variabile, quindi è possibile pensare di realizzare vettori e matrici di strutture:
>> s1 = struct ('nome', 'Mario', 'voto', 2 ) ;
2×2 struct array with fields:
nome
voto
L’accesso e l’assegnazione nei vettori di struct avvengono esattamente come per l’accesso e l’assegnazione nelle matrici, cioè utilizzando uno o più indici, combinati con la notazione punto. Ad esempio per accedere a un valore della matrice di struct precedentemente creata:
>> s(2,1)
ans =
struct with fields:
nome: 'Fabio'
Voto: 4
Per assegnare un valore invece:
>> s(2,1).nome = 'Luca';
>> s(2,1) % serve per vedere l'assegnazione
ans =
struct with fields:
nome: 'Luca'
Voto: 4
Approfondimenti
L'help di Matlab relativo alle strutture si trova all'indirizzo: https://it.mathworks.com/help/matlab/structures.html