如果使用计时器对象花费的时间超过指定的秒数,如何在MATLAB中停止脚本?

Nor*_*din 5 matlab

我每天多次运行一个matlab脚本,很多时候执行它需要很长时间.我想要做的是启动一个计时器来跟踪脚本运行的时间,并在脚本超过指定的秒数时停止脚本

我在一个简单的脚本上测试了这个原理:

waittime = 5;
t = timer('TimerFcn','error(''Process ended because it took too long'')',waittime); 
start(t)
pause(10);
Run Code Online (Sandbox Code Playgroud)

我期望发生的是这个函数等待5秒,然后它将执行停止功能,这是error('Process ended because it took too long')命令.

运行此命令时,将执行stop命令,但不会停止主脚本运行.

在我的命令窗口中,我看到了

Error while evaluating TimerFcn for timer 'timer-20' 
Process ended because it took too long
Run Code Online (Sandbox Code Playgroud)

之后脚本不会停止,并且会持续运行整整10秒钟

我不希望在TimerFcn函数上抛出此错误,我希望在运行的脚本上抛出此错误,使其停止运行.

有什么方法可以控制错误被编译的脚本/函数吗?

Vah*_*yan 1

如果您有权访问脚本并且可以定期检查脚本内的时间,则可以执行以下操作

waittime = 3;
endt=true;
t = timer('TimerFcn','endt=false; disp(''Timer!'')','StartDelay',waittime); 
start(t);

i=1;
while endt==true
    a=exp(i);
    i=i+1;
    pause(0.1);
end
Run Code Online (Sandbox Code Playgroud)

如果您没有任何周期性的位或无法访问脚本,我认为这里描述了您最好的选择

Matlab:实现 CTRL+C 的功能,但在代码中

希望这有帮助