我正在MATLAB进行长时间的模拟,我意识到我需要停止并重新运行。但是,MATLAB真正进入了这个计算,并且它已停止响应。如何在不杀死MATLAB的情况下中断此运行?
(我意识到这是许多Windows程序的一个问题,但对MATLAB来说真的很严重。)
答案 0 :(得分:22)
转到命令窗口,然后按Ctrl-C。根据我的经验,在单核机器上你没有机会,除非你做了很多输出。在多核或多处理器机器上,你最终可能会停止它,但这需要时间。
另见http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html
添加:这是一个很好的做法:(1)在运行任何非常长的内容之前保存工作区的快照,(2)在很长的计算中,将一些变量写入文件不时地,如果它被中断(例如电源故障),你可以恢复计算。
答案 1 :(得分:18)
MATLAB对CTRL-C的响应程度取决于它的作用。例如,如果它在BLAS或LAPACK调用的中间,则在该调用返回之前它不会响应。如果您正处于执行大量MATLAB行的代码块中,您可以期望CTRL-C更具响应性。
答案 2 :(得分:6)
我有一个非常简单的技巧来暂停(或停止)无响应的执行。 如果我的模拟运行了一个很长的循环,我总是这样做:
for ii = 1:N
do_stuff();
clear empty_script;
empty_script;
end
然后创建一个包含以下内容的文件empty_script.m
:
%keyboard
每当我想暂停执行时,我都会打开外部文本编辑器并取消注释keyboard
中empty_script.m
的行。这让我处于调试模式,在那里我可以观察变量,修改内容甚至停止程序。
答案 3 :(得分:5)
处理这个问题的另一个策略是在计算中的某处(特别是在FOR或WHILE循环中)引入一个非常短的暂停,如:
for ii = 1:N
do_stuff();
pause(0.1);
end
这会增加你的疯狂Ctrl-C实际上会阻止它的机会。
答案 4 :(得分:1)
您可以在Windows任务管理器中找到MATLAB过程,并将优先级设置为高或低,并让其他程序具有更低或更高的优先级。根据我的经验,这是一种有效的方式。
答案 5 :(得分:-3)
如果你不想停下来重新运行,那么杀戮也不错 转到Windows任务管理器 - >然后进程罚款MATLAB.exe并按下结束进程按钮