對於迴圈
迭代列向量
一個常見的錯誤來源是嘗試遍歷列向量的元素。列向量被視為具有一列的矩陣。 (在 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:b
或 a:c:b
,而是一次建立一個元素。
這可以通過稍微改變語法來檢測。
% Loops forever
for i = 1:1e50
end
% Crashes immediately
for i = [1:1e50]
end