Nat*_*man 34 matlab windows-xp interrupt
我在MATLAB中运行了一个很长的模拟,我意识到我需要停止并重新运行.但是,MATLAB真正进入了这个计算,并且它已停止响应.如何在不杀死MATLAB的情况下中断此运行?
(我意识到这是许多Windows程序的一个问题,但它对MATLAB来说非常严重.)
AVB*_*AVB 22
转到命令窗口,然后按Ctrl-C.根据我的经验,在单核机器上你没有机会,除非你做了很多输出.在多核或多处理器机器上,您最终可能会停止它,但这需要时间.
另请参见http://www.mathworks.com/support/solutions/en/data/1-188VX/index.html
补充:这是一个很好的做法:(1)在运行任何非常长的事情之前保存工作区的快照,(2)在很长的计算中,不时地将一些变量写入文件,这样你就可以恢复计算是否被中断(例如,电源故障).
Edr*_*ric 18
MATLAB对CTRL-C的响应程度取决于它的作用.例如,如果它在BLAS或LAPACK调用的中间,则在该调用返回之前它不会响应.如果您正处于执行大量MATLAB行的代码块中,您可以期望CTRL-C更具响应性.
我有一个非常简单的技巧来暂停(或停止)无响应的执行.如果我的模拟运行了一个很长的循环,我总是这样做:
for ii = 1:N
do_stuff();
clear empty_script;
empty_script;
end
Run Code Online (Sandbox Code Playgroud)
然后创建一个empty_script.m包含以下内容的文件:
%keyboard
Run Code Online (Sandbox Code Playgroud)
每当我想暂停执行我打开外部文本编辑器,并取消对行说keyboard在empty_script.m.这让我处于调试模式,在那里我可以观察变量,修改内容甚至停止程序.
处理这个问题的另一个策略是在计算中的某个地方引入一个非常短的暂停(特别是在FOR或WHILE循环中),如:
for ii = 1:N
do_stuff();
pause(0.1);
end
Run Code Online (Sandbox Code Playgroud)
这会增加你疯狂的Ctrl-C'ing实际上会阻止它的机会.