for i = 1:length(startIdx)
for j = 1:length(date(startIdx(i):cutoffIdx(i)))
k = date(startIdx(i):cutoffIdx(i));
try
shortIdx(j)=find(and(and(and(and(and(jam>=1.2,jam<=2.3),expiration==xDates(i)),option_type=='c'),jamSym==1),quote_date==k(j)),1);
catch
warning('Not present')
shortIdx(j)=0;
end
end
end
我们说i
= 1:4。在第一次通过我,一切都很好。但是当i
= 2时,我会覆盖i
为1时创建的存储的shortIdx数据。j
是每个i
的长度,k
是每个i
的日期。我被绊倒的地方是try语句的最后一部分
quote_date==k(j)
因为当i
变为2时,j
会重置为1.因此,即使k
是i
的正确日期集,我只是覆盖了shortIdx
变量,而不是附加到它。有没有办法让我有效地解决这个问题?或者我是否需要为每个i
创建一个独立的for循环?谢谢。
答案 0 :(得分:0)
保存到由i
和j
编制索引的2D数组中。在内循环的每次传递
shortIdx(i, j) = someObscenelyLongAndStatement;
为了提高效率,您应该在循环之前预先分配shortIdx
。
或者,您可以创建一个长1D数组,更新索引将是
shortIdx(length(startIdx)*(i- 1) + j) = ...
祝你好运!