我有一个while循环,无限,我想在按下键盘按键时停止它。停止一个无限循环在Matlab中按下一个键
伪代码:
While(1)
do stuff;
listening for key;
if key is pressed
break;
end
end
功能waitforbuttonpress
让我按下键,所以没有运气。
我在网上找不到选项。
我有一个while循环,无限,我想在按下键盘按键时停止它。停止一个无限循环在Matlab中按下一个键
伪代码:
While(1)
do stuff;
listening for key;
if key is pressed
break;
end
end
功能waitforbuttonpress
让我按下键,所以没有运气。
我在网上找不到选项。
我想如果你不想求助于multithreading(一个线程在while循环中进行计算,另一个线程在等待输入并设置一个全局标记值来打破while循环),你可以尝试实现break捕捉键盘中断的循环(ctrl-c)。这应该是可能的,尽管在hackish way。
好吧,我知道这有点晚了,但是,我在长时间的追捕后发现了一个解决方案。当聚焦在人物窗口,你可以这样做:
set(gcf,'currentchar',' ') % set a dummy character
while get(gcf,'currentchar')==' ' % which gets changed when key is pressed
do_stuff()
end
在焦点是在数字键被按下,它设置属性“currentchar”。在R2010b测试。
基于GUI的解决方案,我在Matlab central
dialogBox = uicontrol('Style', 'PushButton', 'String', 'Break','Callback', 'delete(gcbf)');
while (ishandle(dialogBox))
statements....
end
你知道,按Ctrl + C将终止发现的东西,对不对? –
我想让它结束而不是整个程序。 – SamuelNLP
查看此链接:http://undocumentedmatlab.com/blog/waiting-for-asynchronous-events。看看你想为'waitfor'设置一个超时的部分。 – rayryeng