Java 如何在后台运行matlab?

Java 如何在后台运行matlab?,java,matlab,command-line,sublimetext3,Java,Matlab,Command Line,Sublimetext3,我目前正在使用Matlab.m文件的外部编辑器,以及一个自定义构建系统,该系统从命令行调用Matlab来运行Matlab脚本(使用-nosplash和-nodesktop)。然而,这造成了两个问题: 1) Matlab在运行脚本后立即关闭:我在脚本中调用的任何窗口或绘图在运行脚本后立即关闭,这显然发生在几秒钟之内 2) 每次我运行脚本时都会有一点延迟,因为Matlab实际上是从零开始的 所以我想知道是否有可能让Matlab在后台运行,并在我想的时候运行脚本 我正在运行Linux 64位、Matl

我目前正在使用Matlab.m文件的外部编辑器,以及一个自定义构建系统,该系统从命令行调用Matlab来运行Matlab脚本(使用
-nosplash
-nodesktop
)。然而,这造成了两个问题:

1) Matlab在运行脚本后立即关闭:我在脚本中调用的任何窗口或绘图在运行脚本后立即关闭,这显然发生在几秒钟之内

2) 每次我运行脚本时都会有一点延迟,因为Matlab实际上是从零开始的

所以我想知道是否有可能让Matlab在后台运行,并在我想的时候运行脚本

我正在运行Linux 64位、Matlab2013a和Sublime Text 3

编辑:我已经用一个基本脚本测试了设置:

a=5;
figure
plot(a);
EDIT2:我通过一个运行以下命令的Sublime文本构建系统调用Matlab:

matlab -nosplash -nodesktop <[script].m

matlab-nosplash-nodesktop如果不在某个地方打开交互式会话,就无法让matlab在后台运行并“随时运行脚本”

假设您的系统有一个自定义包装器
matlab包装器
,用于在后台提交脚本。您可以这样调用脚本:

$ matlab-wrapper myscript.m
#!/bin/bash
/apps/matlab14a/bin/matlab -nodesktop -nosplash -r run\ "$1",exit
很可能,
matlab wrapper
正在执行以下操作:

$ matlab-wrapper myscript.m
#!/bin/bash
/apps/matlab14a/bin/matlab -nodesktop -nosplash -r run\ "$1",exit
甚至更多,通过
qsub
或其他命令将上述脚本提交给调度程序


关键是修改包装器脚本,以找到实际调用Matlab二进制文件的部分。如果系统允许,可以复制包装器脚本并对其进行修改。(只需删除
-r run\“$1”
文本或更复杂的内容即可。)然后,您应该能够根据系统上的自定义配置启动交互式版本的Matlab,并从Matlab命令窗口调用脚本。

请提供shell脚本/对脚本的调用。我不记得MATLAB在使用
-nodesktop
运行脚本后退出。编辑了我的答案。不过我怀疑问题出在脚本上。我刚才说的是bash/sh/你用来打开MATLAB的shell调用。我也怀疑MATLAB脚本是否是问题所在;-)对不起,我的错。我现在添加了它。MATLAB退出的原因可能是因为使用流
向MATLAB命令发送一个EOF。所以我需要编写一个脚本,找到正在运行的MATLAB会话的PID/标识符并提交.m来运行,对吗?我想MatlabForuns将是一个更适合研究这个问题的地方。再说一遍,“运行Matlab会话”是什么意思?据我所知,以交互方式向单个Matlab会话发出多个命令的唯一方法是将其作为一个交互会话,然后在Matlab命令窗口中键入命令。我只想使用CLI,使用
nodesktop
选项运行。但我不知道这是否可能,运行
(matlab-nodesktop)&
它只是停留在启动图像中。这并不意味着您使用的是MatlabGUI。您应该能够调用Matlab作为
Matlab-nodesktop-nosplash
。为什么要尝试将此过程作为背景?