在Matlab中按一个键停止无限循环

时间:2014-05-21 16:18:02

标签: matlab while-loop keypress

我有一个while循环,无限,我想在按键盘键时停止它。

伪代码:

While(1)
    do stuff;

    listening for key;
    if key is pressed
        break;
    end
end

函数waitforbuttonpress让我按下键,所以没有运气。

我在网上找不到任何选项。

3 个答案:

答案 0 :(得分:3)

好的,我知道这有点晚了但是,经过长时间的追捕,我找到了一个解决方案。当一个数字窗口被聚焦时,你可以这样做:

set(gcf,'currentchar',' ')         % set a dummy character
while get(gcf,'currentchar')==' '  % which gets changed when key is pressed
   do_stuff()
end

当焦点在图中时按下某个键,它会设置属性'currentchar'。在R2010b中测试过。

答案 1 :(得分:3)

我在Matlab central

中找到的基于GUI的解决方案
dialogBox = uicontrol('Style', 'PushButton', 'String', 'Break','Callback', 'delete(gcbf)');
while (ishandle(dialogBox))
    statements....
end

答案 2 :(得分:1)

我想如果你不想诉诸multithreading(一个线程在while循环中进行计算,另一个等待输入并设置全局sentinel值来打破while循环)你可以尝试在捕获键盘中断(ctrl-c)时实现打破循环。这应该是可能的,尽管有点hackish way