2015-06-27 77 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