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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top