2011-02-01 6 views
2

loop1 démarrerboucle imbriquée dans MATLAB

LOOP2 commencer

loop3 démarrer

X

fin loop3

boucle d'extrémité 2

boucle d'extrémité 1

Puis-je stocker la valeur de X de sorte que je puisse voir toutes les valeurs après l'exécution de toutes les boucles? Juste mentionner X est des chaînes de texte.

Mise à jour: cela fonctionne ,. Je reçois une sortie comme:

 {790x1 cell} 
      [] 
      [] 
      [] 
      [] 
      [] 
      [] 
      [] 
      [] 
      [] 

Je suppose que, toutes mes cordes sont enregistrées dans le {} 790x1 cellule. Y a-t-il un moyen de les voir? Le code:

X_record=cell(10000,1); 
c=1; 
for k=1:200 
    for i=1:300 
     for it=1:200 
      X='NY is crowded'; 
      X_record{c}=X; 
      c=c+1; 
     end 
    end 
end 

EDIT: 2

clear all 
clc 

X_record=cell(10,1); 
c=1; 

for k=1:2 
    for i=1:3 
     for it=1:2 
      X='NY is crowded'; 

      f_id=fopen('c.txt','a+'); 
      fprintf(f_id,'%5s\n',X) ;%#ok<CTPCT,CTPCT> 
      fclose(f_id) 

      X_record{c}=X; 
      c=c+1; 
     end 
    end 
end 

SORTIE:

NY est bondé NY est bondé NY est bondé NY est bondé NY NY est bondé est bondé ...

Pourquoi je ne reçois aucune nouvelle ligne?

+0

S'il vous plaît donner un exemple 'réel'. – zellus

+1

Si vous publiez du code réel, nous pouvons probablement vous montrer comment ne pas utiliser les boucles du tout. – Jonas

+0

Je vais essayer de télécharger le code de la prochaine fois. – Tinglin

Répondre

4

Utilisez un cell array:

X_record = cell(M*N*P,1); 

c = 1; 
for i = 1:M 
    for j = 1:N 
     for k = 1:N 
      X = whatever; 
      X_record{c} = X; 
      c = c + 1; 
     end 
    end 
end 
+3

Ou 'X_record = cellule (M, N, P)' et plus tard 'X_record {i, j, k} = X'. Vous pouvez toujours utiliser l'indexation 1-d pour accéder ultérieurement à l'ordre si vous le souhaitez. – kwatford

0

Je ne sais pas exactement pourquoi

 X='NY is crowded'; 
     fprintf(f_id,'%5s\n',X) 

..does fonctionnent pas, mais je vous suggère d'essayer

 X='NY is crowded\n'; 
     fprintf(f_id,'%5s',X) 

.. .instead

1

Pour répondre à votre deuxième question sur les raisons pour lesquelles vous ne voyez pas chaque NY is crowded sur une nouvelle ligne, je suppose que vous consultez probablement votre fichier c.txt à l'aide de Microsoft Notepad. Voici un extrait de la section "Examples" de la documentation pour la fonction FPRINTF:

fonctions d'importation, toutes les applications MATLAB UNIX , et Microsoft Word et WordPad reconnaissent '\n' comme indicateur de saut de ligne . Toutefois, si vous envisagez d' lire le fichier avec le bloc-notes Microsoft, , utilisez '\r\n' pour passer à une nouvelle ligne lorsque vous écrivez .

Donc, vous devriez essayer d'imprimer la sortie comme ceci:

fprintf(f_id,'%5s\r\n',X); 
+0

Merci. J'aurais dû penser à lire le détail de la fonction. – Tinglin