2014-05-21 160 views
3

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

伪代码:

While(1) 
    do stuff; 

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

功能waitforbuttonpress让我按下键,所以没有运气。

我在网上找不到选项。

+1

你知道,按Ctrl + C将终止发现的东西,对不对? –

+2

我想让它结束而不是整个程序。 – SamuelNLP

+0

查看此链接:http://undocumentedmatlab.com/blog/waiting-for-asynchronous-events。看看你想为'waitfor'设置一个超时的部分。 – rayryeng

回答

1

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

3

好吧,我知道这有点晚了,但是,我在长时间的追捕后发现了一个解决方案。当聚焦在人物窗口,你可以这样做:

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

在焦点是在数字键被按下,它设置属性“currentchar”。在R2010b测试。

0

基于GUI的解决方案,我在Matlab central

dialogBox = uicontrol('Style', 'PushButton', 'String', 'Break','Callback', 'delete(gcbf)'); 
while (ishandle(dialogBox)) 
    statements.... 
end