matlab可以不启动图形界面运行,比如
```
matlab -nodesktop -nosplash
```
或者
~~~undefined
matlab -nojvm -nosplash
~~~
matlab程序也可以在命令行里直接运行,只需要使用 -r 选项。比如运行当前目录下的example.m
~~~undefined
matlab -nodesktop -nosplash -r example
~~~
或者
~~~undefined
matlab -nojvm -nosplash -r example
~~~
或者
~~~undefined
matlab -nodisplay -r example
~~~
可以将如下命令加到~/.bashrc文件
~~~bash
alias mrun='matlab -nodesktop -nosplash -r'
~~~
这样下次(或者执行source ~/.bashrc)之后就可以直接
~~~undefined
mrun example
~~~
来在命令行运行matlab文件。
如果使用 -nodisplay -r 选项运行,当程序中有figure()命令时会出错,可以使用如下选项抑制图形的显示:
[figure](https://link.jianshu.com?t=http://www.mathworks.com/access/helpdesk/help/techdoc/ref/figure.html)('visible','off');
并使用如下命令将图形输出到文件:
[print](https://link.jianshu.com?t=http://www.mathworks.com/access/helpdesk/help/techdoc/ref/print.html)('-deps','example.eps');
或者
~~~bash
hgsave('example.fig');
~~~
有关matlab startup option 和 command line 运行
在 UNIX 下
\-nodesktop 启动jvm(Jave Virtual Machine),不启动desktop,但help 界面,preferences界面等仍可通过cmdline 调出,即jvm启动但不启动desktop,可以启动其他显示;但是matlab不会在cmd history记录本次执行的命令
\-nodisplay 启动jvm,不启动desktop,不启动任何显示相关,忽略任何DISPLAY 环境变量;即jvm启动但不能显示
\-nojvm 不启动jvm,则与之相关的一切活动将无法进行,包括图形界面显示,help 界面,preferences界面等 即jvm不启动故不能显示
\-nosplash 只是不显示启动时的log画面,jvm,desktop等正常启动
对UNIX 而言,推荐通过Desktop > Desktop Layout > Command Window > Only 设置只显示 command-line interface 而 不要用-nodesktop (why?)
在Windows下
对windows而言,-nodisplay 似乎无效,还是会显示desktop; -nojvm, -nodesktop 不显示desktop,但是会出现简洁的command-line 窗口,也就是说并不会完全没有图形界面,无法像linux一样,只在cmdline操作用Desktop > Desktop Layout > Command Window > Only 设置只显示 command-line interface 后,其他窗口并不会消失
另外 :
\-r 运行matlab cmd命令,多条命令相互用分号或逗号隔开(空格不行),用双引号引起;一条命令可以不用双引号。 这多用在批处理模式下,所运行的文件必须在matlab的启动目录下或者在其搜索路径上,且不能带有路径名和后缀名,-logfile 保存cmdline输出到文件
## fish shell脚本实现
```
function mmatlab
string match '*.m' $argv && #匹配 .m文件
test -f "$argv" && # 看看文件是否存在
cd (dirname $argv)&&
set src (string split -r -m1 / $argv ) && #把路径前缀去掉
set src (string replace '.m' '' $src[2]) && #去掉文件 .m 的后缀
echo $src &&
matlab -nosplash -nodesktop -r $src #调用matlab程序
end
```