在循环中为MatLab函数强制并行最大运行时间

时间:2016-05-06 15:02:35

标签: multithreading matlab loops timer parallel-processing

Matlab的新手,不太熟悉MatLab中的编码和编程。

function fucx()
for i = 1:3
    for j = 1:3
        for k = 1:3
            try
                %MainFuc()

                %TimerFuc()
                time = cputime;
                time = cputime-time;
                a = timer;
                set (a, 'executionMode', 'fixedRate')
                set (a,'timerfcn','disp(time)')
                start(a)
                timeStop = time;
                if (timeStop>60) % in seconds
                    disp('RunOutOfTime: Program terminated');
                    stop(a)
                    break;
                end;

            catch
                %%Err()
            end
        end
     end
end
end

非常感谢您的帮助。

%%更新%%

我看到推荐的答案如下。我试过这个。

start = tic;

for i=1:1000000
    if (mod(i,1000)==0)
        if (toc(start) > 2) % here, 2 seconds
            error('Took toooo loooong');
        end
    end
end

我想要保证的是定时器或tic函数与MainFuc()并行运行并知道何时停止循环。

1 个答案:

答案 0 :(得分:1)

您应该使用matlab中的“tic”和“toc”函数,请参阅此处的文档Matlab tic function。 当你调用“tic”时,计时器重新启动,每次你调用“toc”时,它会给你自上次“tic”以来的秒数。然后,如果再次调用“tic”,计时器将重新启动。

以下是您需要的代码。

a = 0;
for i = 1:3
    for j = 1:3
        tic;
        for k = 1:10^7
            try
                %MainFuc()
                a = a + 1;
            catch
                %%Err()
            end
            %TimerFuc()
            time = toc;
            if (time>2) % in seconds
                disp('RunOutOfTime: Program terminated');
                break;
            end;
        end
    end
end