Leave the whole for-loop
    11 views (last 30 days)
  
       Show older comments
    
How can I leave the loop completely, if an "if" statement in that loop turns out to be true? I have tried break, but I guess that doesn't work in if-structures... My code structure looks like this:
 for i = 1:5
      (doing some stuff here)
     if [something happens]
         for [...], for [...], (assignments); end, end, 
                    !and STOP COMPLETELY no further calculations are needed!
     else
         for [...], (assignments ); end
     end 
   (doing more stuff)
end
Thanks for any help!
0 Comments
Accepted Answer
  Geert
      
 on 30 Aug 2013
        
      Edited: Geert
      
 on 30 Aug 2013
  
      Why can't you use break? The break command can perfectly be used in combination with if statements. Break will execute the innermost for (or while) loop it is in...
Consider the following example:
   for ii = 1:10
       disp(['Current value of ii = ', num2str(ii)])
       if ii>5
           % execute some for loops
           for kk=1:5
               for ll=1:5
                   % put your commands here
               end
           end
           % exit the for loop
           break 
       else
           for kk=1:5
              % do something here 
           end
       end 
   end
   disp(['for loop was stopped at the moment that ii = ', num2str(ii)])
The break command will exit the innermost loop (type: help break):
break Terminate execution of WHILE or FOR loop.
    break terminates the execution of FOR and WHILE loops.
    In nested loops, break exits from the innermost loop only.
Does this clarifies it for you?
1 Comment
  Simon
      
 on 30 Aug 2013
				If you want to exit both loops from inside the innermost loop, try setting a bool variable before the loops
exitloop = false
Now you can set this variable to true in the inner loop and catch this in the outer loop like
if exitloop
  break
end
More Answers (2)
  David Sanchez
      
 on 30 Aug 2013
        The break command exists the most inner for/while loop. For nested for loops, you have to set a flag so that when it is active, the whole loop finishes. Following you code structure, break should exit:
 for i = 1:5
      (doing some stuff here)
     if [something happens]
         for [...], for [...], (assignments); end, end, 
                    !and STOP COMPLETELY no further calculations are needed!
         break  % this break here will cause to get out of the main for-loop since it is not place within another for-loop
     else
         for [...], (assignments ); end
     end 
   (doing more stuff)
end
0 Comments
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


