Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何在编程上区分交互式流程和批处理流程?_Matlab - Fatal编程技术网

Matlab 如何在编程上区分交互式流程和批处理流程?

Matlab 如何在编程上区分交互式流程和批处理流程?,matlab,Matlab,我有一些脚本,我想在我的桌面(Windows7)机器的后台运行。我知道要做到这一点,我需要使用如下命令启动MATLAB: matlab-nosplash-noFigureWindows-r“myScriptName” 我也明白,为了让它干净地工作,我需要在脚本末尾包含一个exit命令 是否有一种方法可以可靠地确定脚本是在后台进程中运行还是以交互方式运行?我希望避免在交互过程中不经意地运行脚本并意外地终止MATLAB会话的情况 if ~RunningInInteractiveMode ex

我有一些脚本,我想在我的桌面(Windows7)机器的后台运行。我知道要做到这一点,我需要使用如下命令启动MATLAB:

matlab-nosplash-noFigureWindows-r“myScriptName”

我也明白,为了让它干净地工作,我需要在脚本末尾包含一个
exit
命令

是否有一种方法可以可靠地确定脚本是在后台进程中运行还是以交互方式运行?我希望避免在交互过程中不经意地运行脚本并意外地终止MATLAB会话的情况

if ~RunningInInteractiveMode
    exit
end

是否有一个函数或其他布尔测试可以替代
~RunningInInteractiveMode
?我看了一下,但是Windows没有
-noDesktop
选项,因此总是有一个命令窗口打开(辅助问题:如果没有完全打开命令窗口,是否可以在Windows中完全在后台运行MATLAB?)。如果重要的话,我正在运行r2014a。

您可以使用参数运行脚本:

matlab -nosplash -noFigureWindows -r "background=true;myscript"
这样在脚本末尾:

if exist background
    exit
end

可以使用参数运行脚本:

matlab -nosplash -noFigureWindows -r "background=true;myscript"
这样在脚本末尾:

if exist background
    exit
end
使用
功能('ShowFigureWindows')
检查是否使用了
-noFigureWindows
,以及
使用Java('jvm')
检测JRE是否可用

background_task=~feature('ShowFigureWindows')||~usejava('jvm')
使用
功能('ShowFigureWindows')
检查是否使用了
-noFigureWindows
,以及
使用Java('jvm')
检测JRE是否可用

background_task=~feature('ShowFigureWindows')||~usejava('jvm')

您不需要将
exit
添加到脚本中,您可以将其添加到命令行:

matlab -nosplash -noFigureWindows -r "myScriptName;exit"

您不需要将
exit
添加到脚本中,您可以将其添加到命令行:

matlab -nosplash -noFigureWindows -r "myScriptName;exit"

很接近,但是如果我在交互模式下运行脚本,它将抛出一个错误,因为变量
background
将未定义。我想这没什么大不了的,因为这是脚本的最后三行,所以所有重要的代码都将运行,并且我的变量将被适当地填充。看起来MATLAB应该对它周围的环境有一些情景感知。如果exist background很接近,但是如果我在交互模式下运行脚本,它将抛出一个错误,因为变量
background
将未定义。我想这没什么大不了的,因为这是脚本的最后三行,所以所有重要的代码都将运行,并且我的变量将被适当地填充。看起来MATLAB应该对周围环境有一些情景感知。
如果存在背景
@BryanP:请不要在标题中添加标签。请参阅。@BryanP:请不要在标题中添加标记。看见