2014-09-02 5 views
3

Je suis un débutant dans l'utilisation de Matlab et je suis tombé sur des tableaux de cellules, mais je ne suis pas sûr de savoir comment utiliser l'indexation.Comment utiliser les tableaux de cellules dans Matlab?

J'ai créé un réseau de cellules de 5 lignes et 3 Col. en procédant comme suit:

A = cell(5,3); 

est-il maintenant possible de passer par le réseau de cellules par ligne d'abord puis le col comme la façon dont une boucle for imbriquée pour un tableau normal?

for i=1:5 
     for j=1:3 
      A{i,j} = {"random"} //random numbers/ string etc 
     end 
    end 

Répondre

5

Avec réseaux de cellules vous avez deux méthodes d'indexation à savoir parenthèse (soit (...)) et accolades (soit {...}).

permet de créer un réseau de cellules à utiliser pour les exemples:

A = {3, 9,  'a'; 
    'B', [2,4], 0}; 

indexation en utilisant les parenthèses renvoie une partie de la matrice de cellules AS un réseau de cellules. Par exemple

A(:,3) 

retourne un 2-en-1 réseau de cellules

ans = 

    'a' 
    0 

indexation en utilisant des accolades renvoient les SOMMAIRE de cette cellule, par exemple

A{1,3} 

retourne un seul caractère

ans = 

a 

Vous pouvez également utiliser des parenthèses pour renvoyer une seule cellule, mais ce sera toujours une cellule. Vous pouvez également utiliser des accolades pour renvoyer plusieurs cellules mais celles-ci renvoient comma separated lists, ce qui est un peu plus avancé.

Lors de l'affectation à une cellule, des concepts très similaires s'appliquent. Si vous affectez à l'aide entre parenthèses, vous devez attribuer une matrice de cellulesde la taille appropriée:

A(:,1) = {1,1} 

si vous attribuez une valeur unique à l'aide entre parenthèses, alors vous devez le mettre dans une cellule (c.-à-A(1) = 2 sera vous donner une erreur, donc vous devez faire A(1) = {2}). Donc, il est préférable d'utiliser des accolades, car alors vous êtes directement affecter le contenu de la cellule. Il est donc correct d'aller

A{1} = 2 

cela équivaut à A(1) = {2}. Notez que A {1} = {2}, ce que vous avez fait, ne donnera pas d'erreur, mais ce qui est fait nicher une cellule dans votre cellule, ce qui est peu probable ce que vous recherchiez.

Enfin, si vous avez une matrice à l'intérieur de vos cellules, puis Matlab vous permet d'indexer directement dans cette matrice comme ceci:

A{2,2}(1) 

ans = 

    3 
2

par exemple:

for i=1:5 
    for j=1:3 
     A{i,j} = rand(3) 
    end 
end 

devrait fonctionner parfaitement bien
juste sauter le {} sur le côté droit des =

Questions connexes