Creating an efficient for loop

5 次查看(过去 30 天)
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
Let's say i = 1:4. On the first pass through i, everything is fine. But when i = 2, I am overwriting the stored shortIdx data I created when i was 1. j is the length of each i, and k is the dates for each i. Where I get tripped up is the last part of the try statement
quote_date==k(j)
because when i turns to 2, j is reset to 1. So even though k is the correct set of dates for i, I am simply overwriting the shortIdx variable, instead of appending to it. Is there a way for me to solve this efficiently? Or do I need to create an independent for loop for each i? Thank you.

采纳的回答

Star Strider
Star Strider 2015-8-17
I can’t run your code, but if ‘shortIdx’ is a single value (likely an index, considering the find call), one (probably the easiest) solution is to create a matrix out of ‘shortIdx’ so it increments with both ‘i’ and ‘j’:
shortIdx(i,j) = ...;
and then refer to it by both indices in your catch block.
  2 个评论
Cary
Cary 2015-8-17
Beautiful, Star. As always, thanks for your help!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by