如何停止Matlab脚本但不杀死进程?

时间:2014-11-24 17:41:12

标签: matlab

Strg + C停止并杀死一个Matlab脚本(至少有时候)。但有没有办法停止Matlab,看看一些变量并继续计算?

我不是在谈论设置断点。我想要我的脚本,让我们说运行几个小时回来它点击一些按钮停止计算看一些变量然后继续计算。

我试图找出是否有一些快捷键 - 我很确定没有。

现在我正在考虑包含一个if-case,用于查看用户是否按下了某个按钮。如果是这样,就会有一条无用的k = 0线和断点。如果没有人按下此按钮,循环将继续。但这是我有限的Matlab知识留给我的地方。我不知道是否有办法要求按下用户按钮,但不要像按功能input那样等待按下按钮。另外我只有一个正在运行的脚本,我没有任何GUI。

1 个答案:

答案 0 :(得分:2)

要退回到命令提示符,您需要命令keyboard,然后在完成后键入return(您不需要断点)。棘手的一点是如何触发它。有几个选择。最简单的是打开一个数字窗口。当按下任何键时,以下代码将暂停该过程。

keyDownListener=@(src,event) keyboard;
fig = figure;
drawnow
set(fig,'KeyPressFcn',keyDownListener)
for p=1:10000
  %do some thing
end

您可以对此进行修改以测试特定键,因为按键包含在event结构中。

不使用任何数字gui更多的问题。我不知道非阻塞键盘输入法。一个mex文件在C中运行kbhit()可能会这样做,但kbhit()不是标准C,所以它只适用于Windows。一个更简单的选择可能是测试文件的存在。

for p=1:100000
if exist(fullfile(pwd,'halt.tmp'),'file')
    keyboard
end
%do something here
end

当在当前目录中创建halt.tmp时,这将进入调试控制台。

其他可能的方法可能涉及使用多个线程来读取'输入'(并行计算机工具箱或未记录的Java代码),或使用@bdecaf

中提到的http://psychtoolbox.org/