Comment itérer sur chaque ligne deZoùZest un 2 * m matrix:
6.1101,17.592
5.5277,9.1302
8.5186,13.662
Comment accéder à chaque Z(i)(j) à l'intérieur de cette boucle?
Par exemple:
for i = z
fprintf('Iterating over row: '+ i);
disp (i:1);
disp (i:2);
end
Serait sortie:
Iterating over row: 1
6.1101
17.592
Iterating over row: 2
5.5277
9.1302
Iterating over row: 3
8.5186
13.662
Si vous utilisez for i = z
lorsque z est une matrice, alors i prend la valeur de la première colonne de z (6.1101; 5.5277; 8.5186), puis de la deuxième colonne, etc. Voir manuel octave: The-for-Statement
Si vous voulez parcourir tous les éléments, vous pouvez utiliser
z = [6.1101,17.592;5.5277,9.1302;8.5186,13.662]
for i = 1:rows(z)
for j = 1:columns(z)
printf("z(%d,%d) = %f\n", i, j, z(i,j));
endfor
endfor
qui produit:
z(1,1) = 6.110100
z(1,2) = 17.592000
z(2,1) = 5.527700
z(2,2) = 9.130200
z(3,1) = 8.518600
z(3,2) = 13.662000
Mais gardez à l'esprit que les boucles for sont d'octave lente, il peut donc être souhaitable d'utiliser une méthode vectorisée. De nombreuses fonctions peuvent utiliser une entrée de matrice pour les calculs les plus courants.
Par exemple, si vous souhaitez calculer la somme globale:
octave> sum (z(:))
ans = 60.541
Ou la différence entre les rangées adjacentes:
octave> diff (z)
ans =
-0.58240 -8.46180
2.99090 4.53180
Vous pouvez d'abord transposer la matrice puis faire pour statement comme ceci:
for i = z'
disp(i(1))
disp(i(2))
end
Bien que dans ce cas, vous ne disposerez pas d’un index indiquant la ligne que vous utilisez.