巢狀迴圈

迴圈可以巢狀,以在另一個迭代任務中執行迭代任務。考慮以下迴圈:

ch = 'abc';
m = 3;
for c = ch
    for k = 1:m
        disp([c num2str(k)]) % NUM2STR converts the number stored in k to a charachter,
                             % so it can be concataneted with the letter in c
    end
end

我們使用 2 個迭代器來顯示 abc1:m 的所有元素組合,它們產生:

a1
a2
a3
b1
b2
b3
c1
c2
c3

我們還可以使用巢狀迴圈來組合每次要完成的任務,以及在幾次迭代中要完成的任務:

N = 10;
n = 3;
a1 = 0; % the first element in Fibonacci series
a2 = 1; % the secound element in Fibonacci series
for j = 1:N
    for k = 1:n
        an = a1 + a2; % compute the next element in Fibonacci series
        a1 = a2;      % save the previous element for the next iteration
        a2 = an;      % save ht new element for the next iteration
    end
    disp(an) % display every n'th element
end

這裡我們想要計算所有 Fibonacci 系列 ,但每次只顯示 nth 元素,所以我們得到

   3
   13
   55
   233
   987
   4181
   17711
   75025
   317811
   1346269

我們可以做的另一件事是在內部迴圈中使用第一個(外部)迭代器。這是另一個例子:

N = 12;
gap = [1 2 3 4 6];
for j = gap
    for k = 1:j:N
        fprintf('%d ',k) % FPRINTF prints the number k proceeding to the next the line
    end
    fprintf('\n')        % go to the next line
end

這次我們使用巢狀迴圈來格式化輸出,並僅在元素之間引入新的間隙(j)時制動線。我們遍歷外部迴圈中的間隙寬度,並在內部迴圈中使用它來迭代向量:

1 2 3 4 5 6 7 8 9 10 11 12 
1 3 5 7 9 11 
1 4 7 10 
1 5 9 
1 7