2010-07-07 7 views
-2

Doublons possibles:
Matlab - building an array while looping
Matrix of unknown length in MATLAB?la construction d'une matrice dans Matlab à partir des valeurs générées par boucle

Comment avez-vous mis tous les "a" valeurs ensemble pour former un vecteur?

for i=1:3 
    a=2+i 
end 

Aussi cela est peut-être une question de style, mais quand avez-vous mis un point-virgule après la fin dans une boucle comme celle ci-dessus, est-il aussi bon de mettre un point-virgule après la première ligne?

+0

Je suppose que ce n'est qu'un exemple simplifié et vous en fait plus dans votre boucle. Sinon, vous pouvez tout vectoriser en un seul: 'a = 2 + (1: 3);' – groovingandi

+0

Dupliquer: http://stackoverflow.com/questions/2480933/matlab-building-an-array-while- en boucle, http://stackoverflow.com/questions/1548116/matrix-of-unknown-length-in-matlab – gnovice

Répondre

0

Vous devez indexer a, comme ceci:

for ii=1:3 
    a(ii) = 2+ii; 
end 

Je préfère utiliser ii comme variable de boucle pour éviter des affrontements avec intégré dans Matlab i. Vous devez également pré-allouer a si vous connaissez la taille avant le début de la boucle, comme ceci:

N = 100; 
a = zeros(1,N); 
for ii=1:N 
    a(ii) = 2 + ii; 
end 

Personnellement, je ne mets pas la ponctuation après la partie for ii=1:3, sauf lors de l'écriture d'un FOR one-liner boucle , comme ceci:

for ii=1:N, a(ii) = 2 + ii; end 
0

Notez que vous pouvez construire ce plus efficacement en tant que tel:

a=1:3; 
a=a+2; 

La première ligne a ssigns a être le vecteur (1,2,3), la 2ème ligne ajoute 2 à chaque élément. "Efficacité" n'a pas beaucoup d'importance dans un si petit vecteur, mais en général, vous obtiendrez beaucoup mieux le kilométrage de matlab si vous avez l'habitude de penser plus comme ça.

Questions connexes