首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Matlab中停止正在运行的脚本

如何在Matlab中停止正在运行的脚本
EN

Stack Overflow用户
提问于 2011-01-25 16:01:40
回答 7查看 136.4K关注 0票数 16

我用Matlab写了一个长时间运行的脚本。

代码语言:javascript
复制
tic;
d = rand(5000);
[a,b,c] = svd(d);
toc;

它似乎永远在运行。因为我在编辑器窗口中按了F5。所以我不能在Matlab控制台中按C-Break来停止。

我只想知道如何停止脚本。我现在正在使用任务管理器来杀死Matlab,这真的很愚蠢。

谢谢。

EN

回答 7

Stack Overflow用户

发布于 2011-01-25 19:51:05

Matlab help指出,对于运行时间较长的M文件,或者调用运行时间较长的内置或MEX文件,Ctrl+C并不总是有效地停止执行。通常,这发生在Microsoft Windows平台上,而不是UNIX1平台上。如果遇到此问题,可以通过在M文件中包含drawnow、pause或getframe函数来帮助MATLAB中断执行,例如,在大型循环中。请注意,如果使用-nodesktop选项启动MATLAB,则Ctrl+C的响应速度可能会较慢。

所以我不认为有任何选择。这发生在许多复杂的matlab函数中。我们要么等待,要么不用它们!

票数 8
EN

Stack Overflow用户

发布于 2013-07-02 01:27:05

如果ctrl+c因为你的脚本太长/太复杂而没有立即响应,那就按住它。

当matlab执行一些更深层的脚本时,break命令不会运行,或者它不会在缓冲区中记录ctrl序列,或者在完成这些代码段之前或之后清除缓冲区。在这两种情况下,当matlab返回执行更多脚本时,它将识别出您正在按住ctrl+c并终止。

对于运行时间较长的程序,我通常会尝试找到一个好的位置来提供状态更新,并且我总是使用tic和toc来伴随着一些时间。根据我在做什么,我可能会使用运行时间,分段时间,某种平均值,等等。

对于真正长时间运行的程序,我发现这是非常有用的http://www.mathworks.com/matlabcentral/fileexchange/16649-send-text-message-to-cell-phone/content/send_text_message.m

但是看起来他们也有一些新的函数来实现这个功能。

票数 5
EN

Stack Overflow用户

发布于 2011-01-26 00:33:51

MATLAB在执行mex实现的函数时不响应Ctrl-C。另外,当MATLAB分配大量内存时,它不会响应。一种好的做法是始终针对少量数据运行函数,并在所有测试通过时针对实际规模运行函数。当时间是一个问题时,您可能想要分析每段代码运行的时间以及它们的大致时间复杂性。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4791144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档