Matlab: запуск m-файла из командной строки

Предположим, что;

У меня есть m-файл в месте:
C:\M1\M2\M3\mfile.m

И exe-файл из Matlab находится в этом месте:
C:\E1\E2\E3\matlab.exe

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

Команда вроде этого успешно запускает m-файл:

"C:\\matlab.exe" -nodisplay -nosplash -nodesktop -r "run('C:\\mfile.m');"

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

"C:\\matlab.exe" -nodisplay -nosplash -nodesktop -r "run('C:\\mfile.m');exit;"

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

 C:\\matlab.exe" -nodisplay -nosplash -nodesktop -r "try, run('C:\\mfile.m'), catch, exit, end, exit" 

Если вам нужна дополнительная многословие:

 C:\\matlab.exe" -nodisplay -nosplash -nodesktop -r "try, run('C:\\mfile.m'), catch me, fprintf('%s / %s\n',me.identifier,me.message), end, exit" 

Я нашел исходную ссылку здесь .

В Linux вы можете сделать то же самое, и на самом деле вы можете отправить обратно в оболочку собственный код ошибки, например:

 #!/bin/bash matlab -nodisplay -nojvm -nosplash -nodesktop -r \ "try, run('/foo/bar/my_script.m'), catch, exit(1), end, exit(0);" echo "matlab exit code: $?" 

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

Вот шаги:

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

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

 cat 1.m | matlab -nodesktop -nosplash 

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

Благодаря малату. Ваш комментарий помог мне. Но я хочу добавить блок try-catch, так как нашел метод getReport() который возвращает все сообщение об ошибке и печатает его в консоли matlab.

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

 try some_code ... catch message display(['ERROR in file: ' message.stack.file]) display(['ERROR: ' getReport(message)]) end; 

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

 ERROR in file: C:\..\..\.. ERROR: Undefined function or variable 'modelname'. Error in sub-m-file (line 63) legacy_code( 'slblock_generate', specs, modelname); Error in m-file (line 11) sub-m-file Error in run (line 63) evalin('caller', [script ';']); 

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

  • Что является более быстрой альтернативой http.server (или SimpleHTTPServer) Python?
  • Оператор блокировки vs Метод Monitor.Enter
  • отправлять / отправлять xml-файл с помощью командной строки curl
  • Xcode «Build and Archive» из командной строки
  • Бесполезное использование кошки?
  • Как выполнить несколько операторов в анонимной функции MATLAB?
  • Запуск командной строки молча с помощью VbScript и получение вывода?
  • Загрузка MySQL дампа из командной строки
  • Замена строк в пакетном файле
  • Поиск аргумента Аргумент аргумента командной строки для .NET
  • Запуск одиночного теста из classа JUnit с использованием командной строки
  • Interesting Posts

    Разрешения, восстанавливаемые с Time Machine – копия Finder vs "cp" copy

    Как передать объект в int

    Вложенное членство в группе ldap

    Производительность Java try / catch, рекомендуется ли сохранить то, что находится внутри предложения try, до минимума?

    Шифрование и дешифрование строки в C #

    Маршрутизация в одной сети с различным интерфейсом

    Как создать контекст рендеринга OpenGL с прозрачным фоном?

    Как вертикально центрировать divs?

    Найти вызовы методов в проекте Eclipse

    Почему компилятор c # испускает Activator.CreateInstance при вызове new in с общим типом с новым () ограничением?

    Могу ли я покрасить определенные слова в Документе Google с помощью Google Apps Script?

    Ошибка: не удалось найти файл локальной рабочей области (‘angular.json’)

    Помощь в скорости RAM? И стоит ли это двухканальный?

    Ухудшение RAID5 и отсутствие суперблока md на одном из оставшихся дисков

    Порядок оценки элементов в инициализации списка

    Давайте будем гением компьютера.