Une structure est un tableau multidimensionnel dont l’accès aux éléments s’effectue par l’utilisation de nom de champs. Ce type de variable convient parfaitement aux données référencées (base de données, carnet d’adresses…) Comme les tableaux de cellules, les structures peuvent contenir tous les types de variables (matrice, chaîne de caractère, tableau de cellules, structures etc…).

 

Création d’une structure

L’initialisation d’une structure s’effectue directement ou à l’aide de la fonction STRUCT.

Le code suivant permet de crée une structure Donnees dont les 4 champs seront « nom », « prenom », « age » et « fonction ».

>> Donnees.nom = 'Matlab';
>> Donnees.prenom = 'Mamad';
>> Donnees.fonction = 'Ingénieur';
>> Donnees.age = 30;
>> Donnees

Donnees =
         nom: 'Matlab'
      prenom: 'Mamad'
    fonction: 'Ingénieur'
         age: 30

Une structure est un type de variable multidimensionnelle :

>> Donnees(1,1).nom = 'FAYE';
>> Donnees(1,1).prenom = 'Mamad';
>> Donnees(1,1).fonction = 'Ingénieur';
>> Donnees(1,1).age = 30;

>> Donnees(2,1).nom = 'DIOP';
>> Donnees(2,1).prenom = 'Ousmane';
>> Donnees(2,1).fonction = 'Technicien';
>> Donnees(2,1).age = 25;

>> Donnees(1,1).nom = 'SAGNA';
>> Donnees(3,1).prenom = 'Doudou';
>> Donnees(3,1).fonction = 'Chauffeur';
>> Donnees(3,1).age = 50;

>> Donnees

Donnees =
3x1 struct array with fields:
    nom
    prenom
    fonction
    age

 

Le code précédent crée un tableau de structures Donnees de dimension 3×1.

Ce même tableau de structures Donnees peut être directement créé de cette façon :

>> Donnees2 = struct( 'nom', {'FAYE'; 'DIOP'; 'SAGNA'}, ...
   'prenom', {'Mamad'; 'Ousmane'; 'Doudou'}, ...
   'fonction', {'Ingénieur'; 'Technicien'; 'Chauffeur'}, ...
   'age', {30; 25; 50});

>> Donnees

Donnees =
3x1 struct array with fields:
    nom
    prenom
    fonction
    age

>> Donnees2

Donnees2 =
3x1 struct array with fields:
    nom
    prenom
    fonction
    age

 

Accéder aux valeurs d’une structure

L’accès s’effectue en mentionnant le nom du champ désiré comme ceci :

Nom_structure.nom_champ

>> Donnees(2,1).nom

ans =
DIOP

>> Donnees(3,1).prenom

ans =
Doudou

>> Donnees(1,1).age

ans =
    30

>> Donnees(2,1).fonction

ans =
Technicien

 

Accéder à un élément particulier d’une structure

L’accès aux éléments à l’intérieur d’une structure s’effectue en utilisant soit (), soit {}, soit ., en fonction du type de l’élément.

>> Donnees(1,1).data = {[1 2 ; 3 4] 'raw'};
>> Donnees(1,1).range = [1:50];
>> Donnees(1,1).operateur.nom = 'moi';
>> Donnees(1,2).data = {ones(5) 'filter'};
>> Donnees(1,2).range = [51:100];
>> Donnees(1,2).operateur.nom = 'toi';

>> Donnees(1,1).data{1}

ans =
     1     2

     3     4

>> Donnees(1,1).data{1}(2,1)

ans =
     3

>> Donnees(1,2).data{2}

ans =
filter

>> Donnees(1,2).range(1:10)

ans =
    51    52    53    54    55    56    57    58    59    60

>> Donnees(1,2).operateur.nom

ans =
toi

 

Les structures sont particulièrement utiles pour passer en une seule variable un grand nombre de paramètres.

 

La fonction fieldnames permet d’obtenir la liste des champs d’un niveau de la structure:

fieldnames(Donnees)

La fonction rmfield permet d’éliminer un champ d’une structure existante :

new_Donnees = rmfield(Donnees, 'prenom')

La fonction isfield test l’existence d’un champ dans la structure. Elle retourne 1 si le champ existe, 0 autrement :

isfield(Donnees,'nom')