
Come usare le strutture in Matlab
In questa lezione ti spiego come usare le strutture in Matlab.
Cosa sono le strutture? Una struttura è simile a un array ma più potente. A differenza di un array, una struttura archivia dati di diverso tipo e organizzati per campi. Ogni campo della struttura ha un nome univoco. Un esempio di struttura di array è la rubrica telefonica.
Come creare una struttura
Crea una struttura con il nome "rubrica".
Il primo campo della struttura è il "nome" dei contatti in rubrica.
>> rubrica.nome="Paolo Rossi";
Ora aggiungi il secondo campo della struttura. E' il "telefono" di ogni contatto.
>> rubrica.telefono=123456789;
Un campo può contenere valori numerici, stringhe e anche un array
>> rubrica(1).telefono=[123456789, 987654321]
Infine, aggiungi il terzo campo della struttura per memorizzare l'indirizzo della persona
rubrica.indirizzo="Roma";
In alternativa, puoi creare una struttura digitando tutti i campi in un solo comando usando la funzione struct()
>> rubrica = struct('nome','Paolo Rossi','telefono',123456789, 'indirizzo', 'Roma')
Hai creato una struttura chiamata "rubrica" che contiene un record e tre campi (nome, telefono, indirizzo).
Nota. I campi della struttura hanno un tipo di dato differente. Due campi contengono valori alfanumerici (nome e indirizzo) mentre un campo contiene valori numerici (telefono).
Puoi anche creare una nuova struttura inserendo al suo interno più record.
Scrivi i nomi dei campi una sola volta e racchiudi i dati di ogni singolo campo tra parentesi graffe.
C = struct('materia',{'Matematica', 'Latino', 'Scienze'},'voto',{27,30,18})
Come vedere i campi della struttura
Per visualizzare l'elenco dei campi di una struttura usa la funzione fieldnames().
>> fieldnames(rubrica)
ans =
{
[1,1] = nome
[2,1] = telefono
[3,1] = indirizzo
}
Questa funzione elenca i campi della struttura tra parentesi.
In questo caso la struttura ha tre campi: nome, telefono, indirizzo.
Tutti i record della struttura hanno lo stesso numero (3) di campi e gli stessi nomi dei campi (nome, telefono, indirizzo).
Come inserire altri dati nella struttura
Una volta creata la struttura dei campi, puoi aggiungere i record nella struttura ossia le informazioni che dovrà contenere.
Ad esempio, per aggiungere un secondo record digita il nome della struttura con l'indice 2 tra parentesi tonde e il campo nel lato a sinistra.
Poi digita il valore nel lato destro.
>> rubrica(2).nome="Mario Bianchi";
>> rubrica(2).telefono="987654321";
Adesso la struttura ha due record.
Quando inserisci un nuovo record nella struttura puoi anche lasciare vuoti alcuni campi.
Ad esempio, nel secondo record della struttura manca l'indirizzo.
>> rubrica(2)
ans =
scalar structure containing the fields:
nome = Mario Bianchi
telefono = 987654321
indirizzo = [](0x0)
In alternativa, puoi inserire un nuovo record nella struttura tramite la funzione struct()
>> rubrica(3) = struct('nome','Giuseppe Verdi','telefono',123456789, 'indirizzo', 'Milano')
Come leggere i dati della struttura
Per accedere a un dato nella struttura scrivi il nome della struttura con l'indice tra parentesi tonde. Poi aggiungi il nome del campo che ti interessa dopo un punto.
Ad esempio, digita rubrica(1).telefono per leggere il telefono nel primo record della struttura
>> rubrica(1).telefono
ans = 123456789
Digita rubrica(2).telefono per leggere il telefono nel secondo record.
>> rubrica(2).telefono
ans = 987654321
Digita rubrica.telefono per visualizzare tutti i dati del campo "telefono" della struttura "rubrica"
>> rubrica.telefono
ans = 123456789
ans = 987654321
Digita rubrica(1) per ottenere tutti i dati nei campi del primo record della struttura
>> rubrica(1)
ans =
scalar structure containing the fields:
nome = Paolo Rossi
telefono = 123456789 987654321
indirizzo = Roma
Come eliminare un campo della struttura
Per eliminare un campo dalla struttura usa la funzione rmfield()
Ad esempio, aggiungi un nuovo campo "test" nella struttura
>> rubrica(2).test="prova";
La struttura ha quattro campi (nome, telefonono, indirizzo, test).
>> fieldnames(rubrica)
ans =
{
[1,1] = nome
[2,1] = telefono
[3,1] = indirizzo
[4,1] = test
}
Ora, digita rmfield(rubrica,"test") per rimuovere il campo "test".
>> rubrica=rmfield(rubrica,"test");
Il campo "test" è stato eliminato dalla struttura.
>> fieldnames(rubrica)
ans =
{
[1,1] = nome
[2,1] = telefono
[3,1] = indirizzo
}