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 ) ;
>> s2 = struct ('nome', 'Pippo', 'voto', 8 ) ;
>> s3 = struct ('nome', 'Fabio', 'voto', 4 ) ;
>> s4 = struct ('nome', 'Moreno','voto', 6 ) ;
 
>> s = [ s1 , s2 ;...
s3 , s4]
 
s =
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

Ultime modifiche: lunedì, 1 gennaio 2024, 16:44