在WinXP的命令行上运行Matlab

5

我刚开始使用Matlab进行实验,因为我习惯于Vim的界面,所以尽可能避免使用Matlab的编辑器。令我困扰的是,每次我启动一个.m文件时,它都会弹出Matlab的界面。

有没有办法从cmd行启动test.m,并让它像在Matlab环境中一样在cmd上输出结果。 类似于“Matlab shell”(像Python的shell,只不过是Matlab的)?

6个回答

10
回答您的问题,以以下方式启动matlab: matalb -nodesktop -nosplash 这适用于Linux和Windows。 在Linux上,您在命令提示符处键入此命令,并且matlab会在同一命令窗口中以文本模式运行。 因此,您将获得所需的“matlab shell”。 在Windows上,进入matlab安装目录并输入相同的命令。 它将打开一个简化的matlab命令行窗口,没有matlab桌面的所有附加功能。
就我个人而言,带有集成调试器的matlab编辑器是您的好朋友。 如果有emacs键绑定,它也更容易执行命令并在matlab桌面中查看结果,而不是在文本模式下运行matlab。 您真正想使用文本模式的唯一时间是如果您的matlab代码运行时间很长,而且您只对最终结果感兴趣。 或者如果您正在运行多个matlab实例。 文本模式占用的内存要少得多,在Linux上,您可以轻松从命令行开始运行并将其放入后台。
实际上,请检查matlab的命令行参数。 您可以执行其他有趣的操作,例如使matlab执行单个函数并退出,就像perl一样,或者将脚本重定向到matlab,如下所示: matlab < script.m

5
你真的愿意在没有m文件调试器的情况下进行开发工作吗?在我看来,这将使你仅限于编写相当简单的程序。经过非常短暂的学习曲线后,我认为你会发现Matlab集成调试器非常棒(而我是VS人)。
如果你坚持这样做,最好的选择是将你的m文件编译为可运行的独立文件。这需要访问(不便宜的)matlab compiler
请注意,Matlab版本6.5及以下分发的编译器与Matlab 7+分发的编译器存在显著差异(不知道编译器版本号)。在6.5中,编译器生成的C代码可以进行编辑和单独编译。从7开始,编译器不进行编译、转换或任何代码生成:今天运行“已编译”程序实际上是在运行一个名为MCR的虚拟Matlab机器——它包含几乎所有的Matlab功能。这是一个庞大的MCR安装程序(安装程序!)上次我检查时重达130M。
关于这个问题仍然可以在新闻组中找到一些争论,但现在这并不重要。事实上,MCR方法似乎更接近您所寻求的方法。

顺便说一句,在Windows上对我来说matlab-nosplash-nodesktop完美地工作-它将Matlab启动为控制台,但这会剥夺您文本编辑器和调试器...


2
我会做的是:
  1. 启动MATLAB
  2. 不要在MATLAB中打开.m文件
  3. 在您选择的编辑器中打开该文件
  4. 像往常一样从MATLAB中运行函数
我想不出任何原因为什么这不起作用,因为MATLAB不应该关心用什么编辑文件。
这不会给你一个"shell",但整个GUI都会打开,但如果可用的话,我想不出为什么你不想要它。

1
如果你的电脑速度较慢,你可能不需要整个GUI界面。 - Dima

0
我和Kigurai一样有同样的问题。我需要用Python驱动Matlab,所以我找到了这个解决方案:
在Python中:
import os

os.chdir('W:\\monrépertoire')

os.spawnl(os.P_NOWAIT, 'monscript.bat')

在monscript.bat中:
matlab.exe -r interp_3D  -nodesktop –nosplash

0

有时确实不需要太多的调试,并且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!!!

0
在Linux环境下,Matlab可以以文本模式启动。
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有解决方案)。


是的,它可以在Windows上运行。它将打开一个简单的Matlab命令窗口。 - Dima

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接