Assignin en deuxième struct niveau
-
25-10-2019 - |
Question
Je suis face à une petite question délicate dans Matlab:
Je veux attribuer des valeurs à un struct créé dynamiquement (2. Niveau):
mes regards struct comme ceci:
a.b.c = 1 %Creates a struct with two levels
maintenant je veux remplir automatiquement a.b
avec c1, c2, c3,...cn
comme voisin-éléments à c
. De plus, le firste leven b
doit être modifié de façon dynamique, de sorte que je ne peux pas coder en dur tout « chemin » ... Toutes les valeurs se composent d'un préfixe (par exemple B ou C) et un suffixe (juste un nombre augmenté d'une boucle)
Ma principale préoccupation est que ce processus doit être fait par une boucle et non à la main (sinon je ferais beaucoup de copier / coller des lignes avec des modifications manuelles).
Il serait bien si quelqu'un pouvait me donner un indice.
Salue, poeschlorn
La solution
Je ne suis pas sûr si cela est ce que vous cherchez. Il utilise les noms de champs dynamiques pour créer onze entrées b et n entrées c:
>> n = 5; >> for ii = 1:11 for jj = 1:n a.b(ii).(sprintf('c%u', jj)) = 1; end end >> a a = b: [1x11 struct] >> a.b(1) ans = c1: 1 c2: 1 c3: 1 c4: 1 c5: 1 >> a.b(3) ans = c1: 1 c2: 1 c3: 1 c4: 1 c5: 1
Autres conseils
solution de b3 vous montre comment créer les champs avec une boucle, mais s'il vous plaît « ne pas faire ». Ne pouvez-vous utiliser un réseau de cellules? Par exemple.
a.b.c = cell( 1, n );
for ii=1:n
a.b.c{ii} = rand(ii);
end