2015-06-27 103 views
1

我在後端使用PHP服務器,並且要求用戶上傳圖像的基本網頁。該圖像用作MATLAB腳本的輸入,以在服務器端執行。在已經運行的MATLAB會話上運行MATLAB腳本

我需要的東西就像運行MATLAB腳本的服務器端運行的MATLAB會話(不清楚那個詞)。我知道這個命令:"matlab -nodesktop -nojvm"可以使用,但重點是我不希望一次又一次地調用MATLAB,而只需要在運行的MATLAB實例上執行MATLAB腳本,只要用戶上傳圖像,獲取輸出(必要)。

有一些限制:
1.操作系統 - > Ubuntu的
2.不能使用Python引擎。

回答

2

存在多個接口來控制matlab。對於這種情況來說,最好的選擇是matlabcontrol或python的matlab引擎(因爲某些原因你不能使用它)。在Windows上,第三種選擇是com。

除了控制matlab過程,你可以在matlab中實現一個接收數據,處理它並將其發回的應用程序。我在matlab中使用apache xmlrpc解決了類似的問題。

也有MATLAB的文件交換一些意見,直接提供MATLAB控制檯via web

+1

非常感謝。 Matlab控制爲我工作。這是一個更好的選擇,因爲Python引擎僅適用於2013年的現有版本的MATLAB – user3159395

1

沒有爲C++,你調用使用engOpen Matlab引擎的API。這將打開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