Как я могу запустить Matlab .m файл в фоновом режиме? - PullRequest
0 голосов
/ 12 января 2020

У меня есть проект, который был написан в MATLAB. Он имеет основной файл, например Main.m, я хочу запускать Main.m повторяющиеся каждые 1 секунду в фоновом режиме. Я не хочу видеть дисплей и открытие windows из MATLAB. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 12 января 2020

Для этого есть два шага. Сначала напишите m-скрипт, который вызывает вашу функцию Main каждые 1 с. Вы можете использовать все oop, как этот. Получение времени для c важно в случае, если вашей основной функции требуется время для вычисления. Альтернативой являются таймеры , которые избегают любого смещения времени (l oop обычно немного больше 1 с, таймер в среднем будет 1 с).

Как только ваш MATLAB знает, что делать вопрос в том, с кого начать. Существует опция -batch:

Выполнение сценария, оператора или функции MATLAB неинтерактивно. MATLAB:

  • Запускается без рабочего стола
  • Не отображается экран spla sh
  • Выполняется оператор
  • Отключает изменения в настройках
  • Отключает кэширование панели инструментов
  • Записывает текст в stdout и stderr
  • Не отображает диалоговые окна

Выйти автоматически с кодом выхода 0, если сценарий успешно выполнен. В противном случае MATLAB завершается с ненулевым кодом выхода.

оператор - это код MATLAB, заключенный в двойные кавычки. Если оператор - это имя функции или скрипта MATLAB, не указывайте расширение файла. Любой необходимый файл должен находиться в пути поиска MATLAB или в папке автозагрузки.

Используйте параметр -batch в неинтерактивных сценариях или рабочих процессах командной строки. Не используйте эту опцию с опцией -r.

Чтобы проверить, выполняется ли сеанс MATLAB в пакетном режиме, вызовите функцию batchStartupOptionUsed.

Пример: -batch "myscript"

Это означает, что MATLAB не откроет ни одного окна, вместо этого вы увидите любой вывод в вызывающей командной строке. Как это выглядит LINUX:

x@y ~ $ matlab -batch "1+1"

ans =

     2
1 голос
/ 12 января 2020

Если в Main.m есть функция верхнего уровня, которую вы хотели бы выполнять раз в 1 секунду, одна из возможностей - запустить экземпляр Matlab и создать другой скрипт, который будет вызывать вашу функцию навсегда l oop с 1-секундной паузой (убедитесь, что этот другой скрипт имеет файл Main.m в PATH, чтобы он мог его видеть)

функция run_main_forever (), в то время как true my_function () pause (1) end end

У вас может быть фоновый файл запуска .bat в фоновом режиме и запуск сценария следующим образом:

matlab -nodesktop -nosplash -r "cd('C:\Path\To\'); run_main_forever();"

См. Эту ссылку для получения дополнительной информации о запуске MATLAB без рабочего стола: https://blogs.mathworks.com/community/2010/02/22/launching-matlab-without-the-desktop/

...