Concaténer des structures
Cet exemple montre comment concaténer des tableaux de structures avec l’opérateur []. Pour concaténer des structures, il est nécessaire que celles-ci possèdent le même ensemble de champs. Toutefois, il n’est pas nécessaire que les champs contiennent des données de même taille ni de même type.
Créez les tableaux de structures scalaires (1 x 1) struct1 et struct2 contenant chacun les champs a et b :
struct1.a = 'first'; struct1.b = [1,2,3]; struct2.a = 'second'; struct2.b = rand(5); struct1,struct2
struct1 = struct with fields:
a: 'first'
b: [1 2 3]
struct2 = struct with fields:
a: 'second'
b: [5×5 double]
De même que la concaténation de deux valeurs scalaires comme [1,2] crée un tableau numérique 1 x 2, la concaténation de struct1 et struct2 crée un tableau de structures 1 x 2.
combined = [struct1,struct2]
combined=1×2 struct array with fields:
a
b
Si vous souhaitez accéder au contenu d’un champ particulier, spécifiez l’indice de la structure dans le tableau. Par exemple, accédez au champ a de la première structure.
combined(1).a
ans = 'first'
La concaténation s’applique également aux tableaux de structures non scalaires. Par exemple, créez un tableau de structures 2 x 2 nommé new. Comme la structure 1 x 2 combined et la structure 2 x 2 new ont deux colonnes toutes les deux, vous pouvez les concaténer verticalement avec un opérateur point-virgule.
new(1,1).a = 1; new(1,1).b = 10; new(1,2).a = 2; new(1,2).b = 20; new(2,1).a = 3; new(2,1).b = 30; new(2,2).a = 4; new(2,2).b = 40; larger = [combined; new]
larger=3×2 struct array with fields:
a
b
Accédez au champ a de la structure larger(2,1). Il contient la même valeur que new(1,1).a.
larger(2,1).a
ans = 1