I have a while loop inside a for loop. If the condition of the while loop is not satisfied, I want to jump directly to the end of the for loop. Could anyone please help?

7 ビュー (過去 30 日間)
t=0:0.5:100;
for i=1:length(t)
while(condition1)
display('Task accomplished')
end %while loop ends here
statement a
statement b
end %for loop ends here
statement c %If condition 1 fails, this is where I want to jump to (directly out of the for loop, irrespective of the value of t)
  3 件のコメント
Rik
Rik 2018 年 7 月 2 日
I agree with Adam. It seems like you want if instead of while, and that the command you're looking for is break.
RACHNA DANDWANI
RACHNA DANDWANI 2018 年 7 月 3 日
Thank you. I tried your solution and realised my approach needed correction. My code works fine now.

サインインしてコメントする。

採用された回答

Adam Danz
Adam Danz 2018 年 7 月 3 日
編集済み: Adam Danz 2018 年 7 月 3 日
Statements a and b are necessary in my code to change the condition 1. Hence I want the entire loop to run such that each iteration of the for loop changes the variables in a way that renders condition1 false. As soon as that happens, I'd like to come out of the for loop.
The goal here is still not entirely clear but based on your comment above, as @Rik Wisselink mentioned, it seems like you want a conditional statement in place of the while loop and a while loop in place of the for loop. Does this do what want it to?
t=0:0.5:100;
lengthT = length(t);
i = 0;
while i <= lengthT
if condition1
disp('Task accomplished')
statement a
statement b
i = i+1;
else
break %When condition1 becomes false, here we enter the while-loop
end
end
% We end up here if condition1 becomes false -OR- when i>lengthT
statement c
  1 件のコメント
RACHNA DANDWANI
RACHNA DANDWANI 2018 年 7 月 3 日
Thank you. I tried replacing a while loop with an if statement and it served my purpose

サインインしてコメントする。

その他の回答 (1 件)

Alpha Bravo
Alpha Bravo 2018 年 7 月 2 日
This is one way to do it.
t=0:0.5:100;
for i=1:length(t)
while(condition1)
display('Task accomplished')
code % do something here to change condition1
end %while loop ends here
if (~condition1)
break
end
statement a
statement b
end %for loop ends here
statement c
  4 件のコメント
Dennis
Dennis 2018 年 7 月 3 日
編集済み: Dennis 2018 年 7 月 3 日
If you need statement a/b to change condition1 you need to do that inside your while loop.
I actually just wanted to type a small example, however i noticed that if you want to exit your for loop the moment condition 1 gets false and you change condition 1 inside your while loop, the for loop will only be iterated once.
Maybe you can clarify what you are trying to do?
RACHNA DANDWANI
RACHNA DANDWANI 2018 年 7 月 3 日
Thank you. The problem is solved by what Rik Wisselink and Adam Danz suggested. Your help is appreciated

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by