Access Struct Data (MATLAB)
-
15-11-2019 - |
Question
a= struct('a1',{1,2,3},'a2',{4,5,6})
Comment peut-être la valeur de 1;
J'essaie d'utiliser A.A1 {1} qui renvoie les erreurs
>> a.a1{1}
??? Field reference for multiple structure elements that is followed by more reference blocks is an
error.
Comment puis-je accéder à 1? Merci.
Éditer
A = struct{'a1',[1 2 3],'a2',[4 5 6]}
Comment puis-je accéder 1. J'utilise A(1).a1
Mais je comprends 1 2 3
La solution
Vous devez le faire à la place:
a(1).a1
La raison est que le code que vous utilisez pour créer votre structure crée en fait un tableau de structure à 3 éléments où le premier élément de tableau contient a1: 1
et a2: 4
, le deuxième élément de tableau contient a1: 2
et a2: 5
, et le troisième élément de tableau contient a1: 3
et a2: 6
.
Lorsque vous utilisez des accolades bouclées {}
en appel à Structure Comme vous l'avez fait, Matlab suppose que vous souhaitez créer un tableau de structure dans lequel vous distribuez le contenu des cellules à travers les éléments du tableau de structure. Si vous souhaitez plutôt créer un seul élément de structure 1 par 1 où les champs contiennent des tableaux de cellules, vous devez ajouter un ensemble supplémentaire de contreventements bouclés entourant vos tableaux de cellules, comme ainsi:
a = struct('a1',{{1,2,3}},'a2',{{4,5,6}});
Puis votre original a.a1{1}
marchera.
ÉDITER:
Si vous créez votre structure à l'aide de tableaux numériques au lieu de tableaux de cellules, comme ainsi:
A = struct('a1',[1 2 3],'a2',[4 5 6]);
Ensuite, vous pouvez accéder à la valeur de 1 comme suit:
A.a1(1)
Pour plus d'informations sur le travail avec des structures à Matlab, consultez Cette page de documentation.