我刚开始使用Matlab进行实验,因为我习惯于Vim的界面,所以尽可能避免使用Matlab的编辑器。令我困扰的是,每次我启动一个.m文件时,它都会弹出Matlab的界面。
有没有办法从cmd行启动test.m,并让它像在Matlab环境中一样在cmd上输出结果。 类似于“Matlab shell”(像Python的shell,只不过是Matlab的)?
我刚开始使用Matlab进行实验,因为我习惯于Vim的界面,所以尽可能避免使用Matlab的编辑器。令我困扰的是,每次我启动一个.m文件时,它都会弹出Matlab的界面。
有没有办法从cmd行启动test.m,并让它像在Matlab环境中一样在cmd上输出结果。 类似于“Matlab shell”(像Python的shell,只不过是Matlab的)?
matalb -nodesktop -nosplash
这适用于Linux和Windows。 在Linux上,您在命令提示符处键入此命令,并且matlab会在同一命令窗口中以文本模式运行。 因此,您将获得所需的“matlab shell”。 在Windows上,进入matlab安装目录并输入相同的命令。 它将打开一个简化的matlab命令行窗口,没有matlab桌面的所有附加功能。matlab < script.m
顺便说一句,在Windows上对我来说matlab-nosplash-nodesktop
完美地工作-它将Matlab启动为控制台,但这会剥夺您文本编辑器和调试器...
import os
os.chdir('W:\\monrépertoire')
os.spawnl(os.P_NOWAIT, 'monscript.bat')
matlab.exe -r interp_3D -nodesktop –nosplash
有时确实不需要太多的调试,并且Matlab的状态应该在调用之间保持不变。一个(唯一的?)例子是Emacs org-mode。它可以用来编写按照literate programming等的代码插入文本。虽然在Matlab中可以使用注释并发布代码,无论是HTML还是LaTeX,但它确实需要离开Emacs的舒适区。
有一个独立程序可用,它使用Matlab引擎来评估从stdin接收到的命令,并将结果转储出来。然而,这个特定版本不支持多行命令,比如if/else/end或for/end。这是engEvalString的一个限制,它期望一次性处理所有内容。有一个丑陋的解决方法可用,使其足够适用于org-mode。
#+begin_src matlab :session *MATLAB* :exports none :cache no :results value
if 3>1
'wow!!!'
end
#+end_src
#+RESULTS:
: wow!!!
matlab -nosplash -nodesktop
但是这在Windows上不起作用。它会在当前shell中启动。在Windows上,这会打开一个新的纯文本窗口。我不知道有什么办法让它在Windows的当前控制台中运行。
也许有一些方法可以通过http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/matlabwindows.shtml&http://www.google.com/search?rlz=1C1GGLS_enUS302US311&sourceid=chrome&ie=UTF-8&q=matlab+command+line+windows'>自动化服务器模式来运行它。
如果你真的很绝望,另一个选择可能是创建一个虚拟机并在其中安装Linux。然后我想有办法配置vim与Matlab良好地配合工作(我现在是一个emacs用户,对于emacs有解决方案)。