Как я могу вызвать Matlab в сценарии на Windows? - PullRequest
5 голосов
/ 26 марта 2010

Я работаю над проектом, который использует несколько языков:

  • SQL для запросов к базе данных
  • Perl / Ruby для быстрой и грязной обработки данных из базы данных и некоторой другой бухгалтерии
  • Matlab для матрично-ориентированных вычислений
  • Различные языки статистики (SAS / R / SPSS) для обработки вывода Matlab

Каждый язык хорошо подходит для своей ниши, и у нас уже есть достаточное количество кода в каждом. Прямо сейчас, есть много ручной работы, чтобы выполнить все эти шаги, которые были бы намного лучше написаны в сценарии. Я уже сделал это на Linux, и он работает относительно хорошо.

В Linux:

matlab -nosplash -nodesktop -r "command"

или

echo "command" | matlab -nosplash -nodesktop

... открывает Matlab в режиме «командной строки». (То есть окна не создаются - он просто читает из STDIN, выполняет и выводит в STDOUT / STDERR.) Моя проблема в том, что в Windows (XP и 7) этот же код открывает окно и не читает из / записи в командной строке. Это просто смотрит на меня безучастно, полностью игнорируя STDIN и STDOUT.

Как мне написать скрипт запуска команд Matlab в Windows? Я в основном хочу что-то, что будет делать:

ruby database_query.rb
perl legacy_code.pl
ruby other_stuff.rb
matlab processing_step_1.m
matlab processing_step_2.m
# etc, etc.

Я обнаружил, что у Matlab есть флаг -automation в Windows для запуска «сервера автоматизации» . Это звучит как излишнее для моих целей, и я хотел бы что-то, что работает на обеих платформах.

Какие варианты у меня есть для автоматизации Matlab в этом рабочем процессе?

1 Ответ

4 голосов
/ 26 марта 2010
matlab -nosplash -nodesktop -r "command"

работает и в Windows. Да, он открывает другое окно, но это не проблема. Я запускаю его в пакетном режиме из Java-оболочки на сервере Tomcat, и никаких проблем не было. Поместите все команды в файл сценария, не забудьте закрыть сеанс с помощью команды exit и используйте флаг -r. Также вы можете найти полезными параметры -noFigureWindows и -wait . И это работает как на Windows, так и на Unix. Вы можете использовать специфичные для платформы флаги, если некоторые из них не поддерживаются, они будут игнорироваться.

Запуск программы MATLAB (платформы Windows)

Существует также способ скрыть окно Matlab с библиотекой C. См. engSetVisible .

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