2015-06-27 10 views
1

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

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

Есть некоторые ограничения:
1. OS -> Ubuntu
2. Не использовать питон двигатель.

ответ

2

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

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

Есть также некоторые представления об обмене файлов MATLAB, непосредственно обеспечивая MatLab консоль via web

+1

Спасибо большое. Matlab Control работал для меня. Это гораздо лучший вариант, потому что движок python работает только с версиями MATLAB от 2013 года – user3159395

1

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

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

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

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 
Смежные вопросы