Как сделать м файл в матлаб

Добавил пользователь Cypher
Обновлено: 04.10.2024

Я хочу запустить этот m-файл с помощью Matlab из командной строки, например, внутри файла .bat. Как я могу это сделать, есть ли способ это сделать?

Подобная команда успешно запускает m-файл:

Я думаю, что один важный момент, который не был упомянут в предыдущих ответах, заключается в том, что, если это явно не указано, интерпретатор Matlab останется открытым. Поэтому к ответу @hkBattousai добавлю exit команду:

По какой-то причине, если mfile.m вызывает ошибку, явная exit функция никогда не вызывается, заставляя весь процесс ждать .

Вот что я бы использовал вместо этого, чтобы изящно обрабатывать ошибки из скрипта:

Если вы хотите больше подробностей:

Я нашел оригинальную ссылку здесь . Поскольку исходной ссылки больше нет, вот ссылка на альтернативную программу чтения, которая все еще существует:

он печатает, matlab exit code: 1 если сценарий генерирует исключение, в matlab exit code: 0 противном случае.

Чтобы отобразить ошибку, как это делал бы MATLAB, когда ее не улавливали, просто сделайте это "try, run('/foo/bar/my_script.m'), catch e, disp(getReport(e)), exit(1), end, exit(0);"

  1. Запустите командную строку.
  2. Войдите в папку, содержащую файл .m с cd C:\M1\M2\M3
  3. Выполните следующее: C:\E1\E2\E3\matlab.exe -r mfile

Системы Windows будут использовать вашу текущую папку в качестве местоположения для MATLAB для поиска файлов .m, и -r опция пытается запустить данный файл .m, как только происходит запуск.

Он не работает внутри файла .bat. Я привел это в качестве примера. Собственно, я буду запускать его функцией Win32 API CreateProcessW() .

И я использую Ubuntu

Кроме того, я напечатал имя файла, так как эта компиляция является частью пакетного сценария, который вызывает Matlab.

Для ложного имени модели, переданного в метод генерации устаревшего кода, результат будет выглядеть так:

Наконец, чтобы отобразить вывод в окне командной строки Windows, просто зарегистрируйте консоль matlab в файл с помощью -logfile logfile.txt (используйте дополнительно -wait ) и вызовите пакетную команду type logfile.txt

Начиная с R2019b, появился новый параметр командной строки -batch . Он заменяет -r , что больше не рекомендуется. Он также унифицирует синтаксис для разных платформ. См., Например, документацию для Windows , для других платформ описание идентично.

Это запускает MATLAB без рабочего стола или экрана-заставки, регистрирует весь вывод в stdout и stderr , выходит автоматически, когда оператор завершается, и предоставляет код выхода, сообщающий об успехе или ошибке.

Таким образом, больше нет необходимости использовать try / catch вокруг кода для запуска, и больше нет необходимости добавлять exit оператор.

Я запускаю эту команду в сценарии bash, в частности, для отправки заданий SGE и пакетной обработки:

Я хочу запустить этот m-файл с помощью Matlab из командной строки, например, внутри файла .bat. Как я могу это сделать, есть ли способ это сделать?

Подобная команда успешно запускает m-файл:

Я думаю, что один важный момент, который не был упомянут в предыдущих ответах, заключается в том, что, если это явно не указано, интерпретатор Matlab останется открытым. Поэтому к ответу @hkBattousai добавлю exit команду:

По какой-то причине, если mfile.m вызывает ошибку, явная exit функция никогда не вызывается, заставляя весь процесс ждать .

Вот что я бы использовал вместо этого, чтобы изящно обрабатывать ошибки из скрипта:

Если вы хотите больше подробностей:

Я нашел оригинальную ссылку здесь . Поскольку исходной ссылки больше нет, вот ссылка на альтернативную программу чтения, которая все еще существует:

он печатает, matlab exit code: 1 если сценарий генерирует исключение, в matlab exit code: 0 противном случае.

Чтобы отобразить ошибку, как это делал бы MATLAB, когда ее не улавливали, просто сделайте это "try, run('/foo/bar/my_script.m'), catch e, disp(getReport(e)), exit(1), end, exit(0);"

  1. Запустите командную строку.
  2. Войдите в папку, содержащую файл .m с cd C:\M1\M2\M3
  3. Выполните следующее: C:\E1\E2\E3\matlab.exe -r mfile

Системы Windows будут использовать вашу текущую папку в качестве местоположения для MATLAB для поиска файлов .m, и -r опция пытается запустить данный файл .m, как только происходит запуск.

Он не работает внутри файла .bat. Я привел это в качестве примера. Собственно, я буду запускать его функцией Win32 API CreateProcessW() .

И я использую Ubuntu

Кроме того, я напечатал имя файла, так как эта компиляция является частью пакетного сценария, который вызывает Matlab.

Для ложного имени модели, переданного в метод генерации устаревшего кода, результат будет выглядеть так:

Наконец, чтобы отобразить вывод в окне командной строки Windows, просто зарегистрируйте консоль matlab в файл с помощью -logfile logfile.txt (используйте дополнительно -wait ) и вызовите пакетную команду type logfile.txt

Начиная с R2019b, появился новый параметр командной строки -batch . Он заменяет -r , что больше не рекомендуется. Он также унифицирует синтаксис для разных платформ. См., Например, документацию для Windows , для других платформ описание идентично.

Это запускает MATLAB без рабочего стола или экрана-заставки, регистрирует весь вывод в stdout и stderr , выходит автоматически, когда оператор завершается, и предоставляет код выхода, сообщающий об успехе или ошибке.

Таким образом, больше нет необходимости использовать try / catch вокруг кода для запуска, и больше нет необходимости добавлять exit оператор.

Я запускаю эту команду в сценарии bash, в частности, для отправки заданий SGE и пакетной обработки:

Основным является сессионный cookie, обычно называемый MoodleSession. Вы должны разрешить использование этого файла cookie в своем браузере, чтобы обеспечить непрерывность и оставаться в системе при просмотре сайта. Когда вы выходите из системы или закрываете браузер, этот файл cookie уничтожается (в вашем браузере и на сервере).

Другой файл cookie предназначен исключительно для удобства, его обычно называют MOODLEID или аналогичным. Он просто запоминает ваше имя пользователя в браузере. Это означает, что когда вы возвращаетесь на этот сайт, поле имени пользователя на странице входа в систему уже заполнено для вас. Отказ от этого файла cookie безопасен - вам нужно будет просто вводить свое имя пользователя при каждом входе в систему.

Читайте также: