matlab - 如何在一定时间后停止运行matlab代码?

标签 matlab

假设我正在运行一个函数 fun(),但我无权访问其内部(因此我无法在其中添加条件)。 对于某些输入,该函数可能会很慢。如果程序运行时间超过一定时间,我该如何终止程序?

更新:我正在测试各种输入集的功能。对于其中一些人来说,这需要更多。我想跳过那些花费太长时间的内容,然后转到下一个输入。

最佳答案

不幸的是,MATLAB 的单线程特性使事情变得比应有的更加复杂。我的第一个想法是使用计时器,但即使计时器回调也不会中断繁忙的 MATLAB,因为所有 M 代码都是从同一线程执行的。

我会通过从另一个 MATLAB 进程调用该函数并监视该进程来解决这个问题。您可以使用内置的 SYSTEM 函数调用 MATLAB,并使用 -r 命令行参数指定要运行的脚本的名称。伪代码看起来像这样。这很粗糙且未经测试,但应该可以让您了解:

% Create Timer object
timerObj = timer();
% set timer properties, with 60 second interval
set(timerObj, 'executionMode', 'singleShot', 'StartDelay', 60, 'timerFcn', @timerCallback);
% call MATLAB. It will run in background
system( 'matlab.exe -r myscript &' );

function timerCallback(varargin)
% if the other matlab process is still running when the timer is elapsed, kill it. perhaps use another system() call to run taskkkill.exe (if on windows)

关于matlab - 如何在一定时间后停止运行matlab代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29680520/

相关文章:

matlab - 多列分组和绘图

performance - 并行MATLAB中Java函数的非线性性能

c++ - 将数据从 OpenCV 矩阵发送到 Matlab 引擎,C++

matlab - 如何对多个变量使用 allocatein ?

matlab - 如何创建曲面图的一部分来创建一条线? (Matlab)

matlab - 按指定顺序创建 1 的数组

performance - 快速 r-连续匹配(基于位置相似性)

matlab - 如何计算roc曲线?

arrays - 如何在 MATLAB 中的 for 循环内创建比率数组?

python - scipy.signal.lfilter : *** ValueError: object of too small depth for desired array