Tableaux de structures
Lorsque vous souhaitez organiser des données par nom, vous pouvez les stocker dans des structures. Les structures stockent les données dans des conteneurs appelés champs auxquels vous pouvez ensuite accéder en spécifiant leur nom. Utilisez la notation pointée pour créer des champs de structure, les affecter et accéder à leurs données. Si la valeur stockée dans un champ est un tableau, vous pouvez utiliser l’indexation de tableau pour accéder à ses éléments. Lorsque vous stockez plusieurs structures sous forme de tableau de structures, vous pouvez utiliser l’indexation de tableau et la notation pointée pour accéder aux différentes structures et à leurs champs.
Créer une structure scalaire
Tout d’abord, créez une structure nommée patient dont les champs contiennent des données relatives à un patient. Le diagramme montre comment la structure stocke les données. Une structure comme patient est également appelée structure scalaire, car la variable contient une seule structure.

Utilisez la notation pointée pour ajouter les champs name, billing et test en affectant des données à chaque champ. Dans cet exemple, la syntaxe patient.name crée à la fois la structure et son premier champ. Les commandes suivantes ajoutent d’autres champs.
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]
Accéder aux valeurs des champs
Après avoir créé un champ, vous pouvez continuer d’utiliser la notation pointée pour accéder à la valeur qu’il contient et la modifier.
Par exemple, modifiez la valeur du champ billing.
patient.billing = 512.00
patient = struct with fields:
name: 'John Doe'
billing: 512
test: [3×3 double]
La notation pointée permet également d’accéder à la valeur de n’importe quel champ. Par exemple, créez un diagramme à barres avec les valeurs de patient.test. Ajoutez un titre contenant le texte de patient.name. Si un champ contient un tableau, la syntaxe suivante renvoie tout le tableau.
bar(patient.test)
title("Test Results for " + patient.name)
Pour accéder à une partie d’un tableau stocké dans un champ, ajoutez des indices adaptés à la taille et au type de tableau. Par exemple, créez un diagramme à barres avec les données d’une seule colonne de patient.test.
bar(patient.test(:,1))

Indexer un tableau de structures non scalaire
Les tableaux de structures peuvent ne pas être scalaires. Vous pouvez créer un tableau de structures de n’importe quelle taille tant que chaque structure du tableau contient les mêmes champs.
Par exemple, ajoutez une seconde structure à patients avec les données relatives à un second patient. Par ailleurs, affectez la valeur initiale de 127 au champ billing de la première structure. Comme le tableau contient désormais deux structures, vous devez accéder à la première structure par indexation, à savoir 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
En conséquence, patient est un tableau de structures 1 x 2 dont le contenu est présenté dans le diagramme.

Chaque dossier patient du tableau est une structure de la classe struct. Un tableau de structures est parfois appelé struct array. Les termes struct array et tableau de structures sont synonymes. Comme les autres tableaux MATLAB®, un tableau de structures peut avoir n’importe quelles dimensions.
Un tableau de structures possède les propriétés suivantes :
Toutes les structures du tableau ont le même nombre de champs.
Toutes les structures ont les mêmes noms de champs.
Les champs de même nom des diverses structures peuvent contenir des données de tailles ou de types différents.
Si vous ajoutez une nouvelle structure au tableau sans spécifier tous ses champs, les champs non spécifiés contiennent des tableaux vides.
patient(3).name = 'New Name';
patient(3)ans = struct with fields:
name: 'New Name'
billing: []
test: []
Pour indexer un tableau de structures, utilisez l’indexation de tableau. Par exemple, patient(2) renvoie la seconde structure.
patient(2)
ans = struct with fields:
name: 'Ann Lane'
billing: 28.5000
test: [3×3 double]
Pour accéder à un champ, utilisez l’indexation de tableau et la notation pointée. Par exemple, renvoyez la valeur du champ billing pour le second patient.
patient(2).billing
ans = 28.5000
Vous pouvez également indexer un tableau stocké dans un champ. Créez un diagramme à barres affichant uniquement les deux premières colonnes de patient(2).test.
bar(patient(2).test(:,[1 2]))

Remarque
Vous pouvez indexer une partie d’un champ uniquement lorsque vous faites référence à un seul élément d’un tableau de structures. MATLAB® ne supporte pas les instructions comme patient(1:2).test(1:2,2:3) qui tentent d’indexer un champ pour plusieurs éléments du tableau de structures. Utilisez plutôt la fonction arrayfun.
Voir aussi
struct | fieldnames | isfield