我正在使用如下命令行字符串运行MATLAB:
C:\<a long path here>\matlab.exe -nodisplay -nosplash -nodesktop -r "run('C:\<a long path here>\mfile.m');"
m文件包含plot()
函数,用于在x-y平面上绘制简单曲线。
m文件成功运行并使用上面指定的命令行字符串绘制绘图。但是,每次运行此命令时,都会出现一个名为“MATLAB Command Window”的窗口以及绘图。
如何使“MATLAB命令窗口”不显示,以便只显示绘图。
“MATLAB命令窗口”如下所示:
答案 0 :(得分:3)
好消息!
通过一些Java操作,它是可能的!启动MATLAB 通常(使用桌面等)现在运行setDesktopVisibility(false)并瞧!例如。
setDesktopVisibility(false);
mesh(rand(10));
pause;
setDesktopVisibility(true);
AFAIK使用matlab.exe
选项无法在Windows上执行此操作。如果你真的需要隐藏它,我建议使用MATLAB Engine来显示你的数字。另外,如果它适用于简单的事情,如绘图等,你可以使用GNU Octave,它与M文件一起使用,并且没有像MATLAB那样的“命令窗口”(它在Windows命令提示符下运行并隐藏它不是很难)。
答案 1 :(得分:3)
如果您是从Windows上的其他程序运行Matlab,则可以使用Matlab COM Automation Server运行它。 ActiveX控件具有Visible属性,可以让命令窗口不可见,但看起来它会使图形可见。
以下是使用另一个Matlab作为控制器的示例。
ml = actxserver('Matlab.Application');
ml.Visible = false;
ml.Execute('surf(peaks)');
或者在VBScript中。
Set ml = CreateObject("Matlab.Application")
ml.Visible = false
ml.Execute("surf(peaks)")
ml.Execute("pause(4)")
这种交互模式可能更符合您的需求,具体取决于您的工作流程的结构,因为它可以让您启动Matlab流程一次并在其上发出许多绘图请求,从而节省启动成本并让您拥有多个情节立刻可见。
如果您仍想从命令行调用它,只需通过带有上述VBScript代码的.vbs包装器脚本运行它,但调用run('...\mfile.m')
而不是surf(peaks)
。您的mfile.m将需要一些GUI逻辑,使其阻止,直到用户解除绘图,替换pause
调用,因此它在查看之前不会消失。
答案 2 :(得分:3)
执行命令
matlab -automation -wait -r "cd \'...\';..."
,将在用户会话中显示最小化的窗口。根据Amro的建议,我们可以将最小化的窗口发送到本地的winlogin会话,这样我们甚至看不到最小化的窗口:
psexec /i 0 matlab -nodesktop -wait -r "plot(rand(100,1)); print -dpng out.png;quit" >null 2>&1
,它将静默保存到C:\ Windows \ System32(如果启用了ISD服务,它可能会弹出一个交互式服务检测对话框窗口,并且/ s或/ x选项在Windows Server 2003或2008中不起作用。)
答案 3 :(得分:1)
com.mathworks.mde.desk.MLDesktop.getInstance.closeCommandWindow
您可以从命令行使用它:
-r "com.mathworks.mde.desk.MLDesktop.getInstance.closeCommandWindow; run('C:\<a long path here>\mfile.m');"