第一遍,一切都很好。 i = 49,j = 1,k = 1112.在第二遍中,i和j移動到下一個變量(50和18),但k保持在1112.它在第三和第四遍時做同樣的事情。結果是consolFut1不斷被覆蓋。有人能指出我的錯誤嗎?我對讀書表示最誠摯的感謝。爲什麼這個for循環移動到下一個變量?
for i = 49:52
expiry=find(vifDate==expDate(i));
for j = [1; 18; 43; 63]
vifCls1 = vifCls(j:expiry);
for k = [1112; 1129; 1154; 1174]
consolFut1 = consolFut(k:expDateIdx(i),i);
arbVIF=vifCls1-consolFut1;
end
end
end
使用[調試器](http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html#brqxeeu-177)遍歷代碼。 – excaza
嘗試行向量,即對於k = [1112,1129,1154,1174]' – Dan
@Dan是正確的。默認情況下,當將一個矩陣指定爲要在循環中迭代的變量時,它會遍歷每列,因此'k'實際上是'[1112,1129,1154,1174]'的單個向量,而不是預期的單個值1112. – rayryeng