Сроки Matlab для выполнения функции - PullRequest
3 голосов
/ 21 июня 2011

Я пытаюсь ограничить выполнение функции в Matlab, поэтому, если он не вернет ответ через X секунд, вызов будет прерван.но у меня есть версия Matlab 2010 года.Можно ли еще ограничить время выполнения функции?

1 Ответ

3 голосов
/ 08 июля 2014

Как уже отмечали другие, вы не можете делать это изначально в Matlab. Однако в системах Unix, например Linux или Solaris Я ранее использовал немного грязный хак для достижения желаемого эффекта.

Вместо вызова файла .m как функции с параметрами сохраните все данные параметров в файле .mat и напишите команду оболочки для вызова Matlab и запуска файла .m, например. myfunc.m как отдельная программа, например

!bash -c "ulimit -t 3;matlab -nodisplay < myfunc.m"

Это ограничит myfunc.m временем выполнения ЦП 3 секундами. Обратите внимание, что процессор не включает доступ к диску и т. Д. Есть и другие флаги, которые вы можете передать ulimit, если вам нужно другое поведение.

Внутри myfunc.m вам нужно будет сохранить данные, которые myfunc.m хочет вернуть в файл .mat, и снова загрузить их в вызывающую программу. Немного неприятного взлома, но я проверил его, и он работает. Обратите внимание на использование оболочки bash для внутренней команды ulimit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...