如果真的很忙,我怎么能打断MATLAB?

我正在MATLAB中运行一个长时间的模拟,我意识到我需要停止并重新运行。 但是,MATLAB真的进入这个计算,并停止响应。 如何在不杀死MATLAB的情况下中断运行?

(我意识到这是一个很多Windows程序的问题,但对于MATLAB来说确实很严重。)

转到命令窗口,并按Ctrl-C了很多。 根据我的经验,在单核机器上,你没有机会,除非你做大量的输出。 在多核或多处理器的机器上,最终可能会停下来,但这需要时间。

另见http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html

补充 :(1)在运行任何非常长的内容之前保存工作区的快照,(2)在很长的计算时间内,不时写一些variables到文件,以便恢复计算是否中断(例如停电)。

MATLAB对CTRL-C的响应取决于它在做什么。 例如,如果它处于BLAS或LAPACK调用的中间,则在该调用返回之前它将不会响应。 如果您正在执行大量MATLAB代码的代码块,则您可以期待CTRL-C更具响应性。

我有一个非常简单的技巧来暂停(或停止)无响应的执行。 如果我的模拟运行一个长循环,我总是执行以下操作:

for ii = 1:N do_stuff(); clear empty_script; empty_script; end 

然后创build一个包含以下内容的文件empty_script.m

 %keyboard 

每当我想暂停执行,我打开一个外部的文本编辑器,并取消注释在empty_script.m keyboardempty_script.m 。 这使我处于debugging模式,我可以观察variables,修改内容甚至停止程序。

处理这个问题的另一个策略是在计算中引入一个非常短暂的停顿(特别是在FOR或WHILE循环中),如下所示:

 for ii = 1:N do_stuff(); pause(0.1); end 

这增加了你疯狂的Ctrl-Cing实际上会阻止它的机会。

您可以在Windows任务pipe理器中findMATLAB进程,并将优先级设置为高或低,让其他程序具有更低或更高的优先级。 根据我的经验,这是一个有效的方法。

如果你不想停止和重新运行,然后杀死是不坏的select转到Windows任务pipe理器 – >进程然后罚款MATLAB.exe,并推动结束进程button