How to break out of a while loop inside a function block ?

4 ビュー (過去 30 日間)
Prashanth Krishnan
Prashanth Krishnan 2015 年 7 月 28 日
I'm trying to break out of a while loop when a key is pressed and I've achieved this through the following code snippet -
keep = 1;
h = figure('KeyPressFcn','keep=0');
while keep
pause(0.01)
end
close(h)
I need to incorporate this into a GUI. But when this exact same code snippet is inserted into a function block, I'm no longer able to break out of the loop. Here's a code for the same -
function calibrate()
keep = 1;
h = figure('KeyPressFcn','keep=0');
while keep
pause(0.01)
end
close(h)
How do I get this to work ?
Thanks !
  1 件のコメント
Muthu Annamalai
Muthu Annamalai 2015 年 7 月 28 日
Please use {} Code editor feature to make your code more readable to others.

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

採用された回答

Jon
Jon 2015 年 7 月 28 日
編集済み: Jon 2015 年 7 月 28 日
The search function is your friend. See https://ch.mathworks.com/matlabcentral/newsreader/view_thread/315080 for someone with the same problem, and an explanation and solution.
  2 件のコメント
Prashanth Krishnan
Prashanth Krishnan 2015 年 7 月 28 日
Thanks Jon! This worked like a dream.
Camile van der Heijden
Camile van der Heijden 2018 年 3 月 1 日
Unfortunately, the newsreader link Jon referred to is no longer available. I would love to know what it said though. Does it involve using flag variables?

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

その他の回答 (1 件)

Muthu Annamalai
Muthu Annamalai 2015 年 7 月 28 日
編集済み: Muthu Annamalai 2015 年 7 月 28 日
Changing your code to,
keep = true;
h = figure('KeyPressFcn',@() keep= ~keep );
while keep
pause(0.01)
sprintf('keep = %d',keep);
end
close(h)
may work. If this doesn't work, make keep an instance of a handle class.

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by