Запуск сценария MATLAB на уже запущенной сессии MATLAB

1

Я использую PHP-сервер на задней панели и базовую веб-страницу, которая просит пользователя загрузить изображение. Это изображение используется как вход в скрипт MATLAB для выполнения на стороне сервера.

То, что мне нужно, это нечто вроде сеанса MATLAB (непонятно для этого слова), который уже запущен на стороне сервера, который запускает сценарий MATLAB. Я знаю о команде: "matlab -nodesktop -nojvm" которую можно использовать, но дело в том, что я не хочу снова и снова ссылаться на MATLAB, а просто выполняю сценарий MATLAB на текущем экземпляре MATLAB всякий раз, когда пользователь загружает изображение, получает результат (необходимо).

Есть некоторые ограничения:
1. ОС → Ubuntu
2. Невозможно использовать движок python.

Теги:

3 ответа

2

Вы можете написать код Matlab, чтобы регулярно проверять папку для загрузки для новых изображений. Обработайте новые изображения, а затем переместите обработанные изображения в папку архива.

Чтобы проверить наличие новых файлов, используйте команду dir

FILES = dir(['path/to/upload/folder/*.PNG']);

Замените PNG-расширение на файлы изображений.

Для перемещения файлов используйте команду movefile

movefile('path/to/upload/folder/Filename.PNG', 'path/to/archive/folder/', 'f')

Чтобы запустить скрипт Matlab с терминала и сохранить его в фоновом режиме

/usr/local/MATLAB/R2014a/bin/matlab -nodisplay -nosplash -r "cd /path/to/matlab/code; MatlabScript" ; < ctrl > Z; bg; disown -h %1
2

Существует несколько интерфейсов для управления матрицей. Вероятно, лучшим вариантом для этого случая является matlabcontrol или механизм matlab для python (который по какой-то причине вы не можете использовать). На окнах третьей альтернативой будет com.

Помимо управления процессом Matlab, вы можете реализовать приложение в Matlab, которое получает данные, обрабатывает их и отправляет обратно. Я решил аналогичную проблему, используя apache xmlrpc в matlab.

Есть также некоторые материалы по обмену файлами в matlab, напрямую предоставляя консоль matlab через веб-интерфейс

  • 1
    Большое спасибо. Matlab Control работал на меня. Это гораздо лучший вариант, потому что Python Engine работает только с 2013 года - нынешние версии MATLAB
1

Существует API для C++, где вы вызываете механизм Matlab, используя engOpen. Это откроет Matlab и опустит его, пока вы его не закроете. Затем ваша программа C++ может подождать и прослушать обработку изображения.

http://www.mathworks.com/help/matlab/calling-matlab-engine-from-cc-and-fortran-programs.html

Другой вариант - скомпилировать скрипт Matlab как отдельный исполняемый файл. Жесткий код имени входного изображения и вывода и пусть PHP обрабатывает перемещение входов и выходов. Все, что требуется серверу, это вызвать исполняемый файл. Каждый раз, когда запускается Matlab, требуется около 5 секунд.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню