return or break in nested loop?

조회 수: 7 (최근 30일)
minoo
minoo 2011년 6월 15일
Hi everybody,
I have written the codes below :
for i=1:25
if isempty(in_x)
return
else
int = int+1;
aa = in_x-in_x(1);
bb = find(aa>((SOP+SPH)*dsr/SL));
if isempty(bb)
return
else
int = int+1;
ll = in_x(bb(1):size(in_x,2))-in_x(bb(1));
bb2 = find(ll>((SOP+SPH)*dsr/SL));
if isempty(bb2)
return
else
int = int+1;
end
end
end
end
I wanna know why when the first condition satisfies, by the return command it goes to the last "end" which is not the corresponding "end" and it should go to the first "end".
is there any other command which i could use instead of return?
  댓글 수: 1
minoo
minoo 2011년 6월 15일
I mean my "for loop" ends when first condition satisfies, but i want to do this for 25 times for 25 different data sets.

댓글을 달려면 로그인하십시오.

채택된 답변

David Young
David Young 2011년 6월 15일
If your code is a script (not part of a function definition), then "return" returns control to the keyboard - that is, it is like a jump to the end of the script. So the answer to your first question is: it's doing what it is supposed to do.
The answer to your second question is yes, you could use the "break" command if you want to exit the inner loop. You mention this possibility in your question title.
If your problem is that you want to go to the next case if in_x is empty, then just simplify the code to
for i=1:25
if ~isempty(in_x)
int = int+1;
% etc.
end
end
But note that your code will need to do something to change the value of in_x on each iteration.
  댓글 수: 3
David Young
David Young 2011년 6월 15일
See the last part of my answer, which has a suggestion for this.
minoo
minoo 2011년 6월 15일
thanks David for your help.it works well

댓글을 달려면 로그인하십시오.

추가 답변 (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