Выполнение условного кода MATLAB на основе cputime - PullRequest
1 голос
/ 09 июня 2011

У меня есть код MATLAB, для выполнения которого в некоторых случаях требуется бесконечное время. Я хотел бы исключить из выполнения моего кода те входные значения, которые заставляют мою функцию MATLAB занимать более X минут, поскольку MATLAB понимает, что выполнение занимает слишком много времени. Вы знаете какой-нибудь способ сделать это? Я мог бы сделать это по параллелизму, если бы он был написан на C, но я ничего не знаю об параллельности в MATLAB.

Фактически, когда я выполняю Control-C (я нахожусь в Windows), чтобы прервать такое бесконечное выполнение, код на самом деле, кажется, завершается правильно.

Большое спасибо.

1 Ответ

3 голосов
/ 09 июня 2011

Если вы работаете в цикле, над которым у вас есть некоторый контроль, вы можете использовать tic и toc, чтобы узнать, как долго вы работаете, и остановиться, если это было слишком долго:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...