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

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top