Как открыть сессию Matlab из Java и выполнить сценарии Matlab - PullRequest
0 голосов
/ 13 ноября 2011

У меня есть скрипт Matlab, который принимает входной файл mat и создает выходной файл. В настоящее время у меня есть сценарий оболочки, который может выполнить этот сценарий.

Я выполняю этот скрипт из Java с использованием класса ProcessBuilder, и все работает хорошо.
Мне нужно очень часто выполнять сценарий matlab из java, и каждый раз, когда сценарий выполняет, создается процесс mcr, сценарий выполняется и mcr завершается.

Мне бы хотелось, чтобы процесс MCR был открыт, и сеанс matlab был открыт для java, чтобы этот процесс оставался живым, чтобы я мог выполнять сценарии несколько раз за один сеанс.

Я считаю, что matlabcontrol подходит для этого. Как настроить MatlabProxyFactory с расположением MCR и LD_LIBRARY_PATH который я устанавливаю в моем сценарии оболочки и выполняю мой сценарий в одном сеансе?

Я также наткнулся на инструмент MATLAB JA Builder, но сейчас я не могу использовать его, поскольку он не бесплатный.

Спасибо!

1 Ответ

2 голосов
/ 13 ноября 2011

Если вы используете matlabcontrol Я не думаю, что вам нужен сценарий оболочки, просто скажите ему имя m-файла, который вы хотите запустить. Если вы хотите сохранить сценарий оболочки вместе с ProcessBuilder, вам нужно запустить процесс один раз и сохранить ссылку на его входной поток. Когда вы хотите выполнить команду, вы записываете ее в этот поток. Кроме того, вы должны поддерживать поток работоспособным, чтобы очистить потоки вывода и ошибок Matlab, иначе они заполнятся и Matlab зависнет. Если вы хотите пойти с этим, я рекомендую посмотреть на источник этого проекта (участником которого я являюсь). Интересующий вас класс - RCaller. Он делает более или менее то же самое, за исключением того, что вызывает R, а не Matlab.

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