第一遍,一切都很好。 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