對於迴圈

迭代列向量

一個常見的錯誤來源是嘗試遍歷列向量的元素。列向量被視為具有一列的矩陣。 (在 Matlab 中實際上沒有區別。)for 迴圈執行一次,迴圈變數設定為列。

% Prints once: [3, 1]
my_vector = [1; 2; 3];
for i = my_vector
    display(size(i))
end

改變迭代變數

更改迭代變數會更改其當前迭代的值,但在後續迭代中不會影響其值。

% Prints 1, 2, 3, 4, 5
for i = 1:5
    display(i)
    i = 5; % Fail at trying to terminate the loop
end

右手邊的 a:b 特殊表現

基本示例將 1:n 視為建立行向量然後迭代它的正常例項。出於效能原因,Matlab 實際上通過不完全建立行向量來處理任何 a:ba:c:b,而是一次建立一個元素。

這可以通過稍微改變語法來檢測。

% Loops forever
for i = 1:1e50
end
% Crashes immediately
for i = [1:1e50]
end