Diğer dillerin aksine MATLAB’deki for döngüsünün değişkeni statiktir. Aslında pass by value demek daha doğru olur. Bu ne demek? Hemen bir örnekle göstereyim:

A = 1:5;

for i = A
    A = 1;
    disp(i);
end


A değişkenini değiştirsek dahi i değişkeni A‘nın ilk halini kullanıyor.

     1

     2

     3

     4

     5

Bir de şu iki kodun farkına bakalım:

tic
for i = 1:10000000
%   Bir şeyler yap
end
toc

tic
for i = [1:10000000]
%   Bir şeyler yap
end
toc
Elapsed time is 0.027504 seconds.
Elapsed time is 1.501059 seconds.

İlkinde C’de olduğu gibi i değişkeni sırasıyla 1′den 10000000′a kadarki değere atandı. Fakat ikinci örnekte önce 10000000′luk bir hafıza açıldı. Ardından döngüye geçildi. İlkini kullanmak daha uygun.

Peki döngü bir vektörde değil de bir matris’te olsaydı?

A = zeros(4); A(:) = 1:16
A =

     1     5     9    13
     2     6    10    14
     3     7    11    15
     4     8    12    16

O zaman sütunlar üstünde döngü kurmuş olacaktık.

i = 1; 
for c = A
    disp(c'); 
    A(:,i) = i; 
    i = i + 1; 
end
     1     2     3     4

     5     6     7     8

     9    10    11    12

    13    14    15    16

A döngü içinde değişmiş olmasına rağmen c‘ye yine statik olarak bağlandı.

A
A =

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4