Matlab上的cmd(winxp)

我刚刚开始用Matlab做一些实验,因为习惯了Vim的界面,所以尽量不要使用Matlab的编辑器。 令我感到困扰的是,每当我启动一个.m文件时,就会出现这个界面。

有没有一种方法可以从cmd行启动test.m,并让它在cmd上输出,就像在Matlab环境中一样。 像“Matlabshell”(像Python的,只有Matlab的)?

要回答你的问题,像这样开始matlab:

matalb -nodesktop -nosplash

这对Linux和Windows都有效。 在linux上,你在命令提示符下键入这个命令,matlab将在文本模式下运行在相同的命令窗口中。 所以你会得到你想要的“matlab外壳”。 在windows上,cd进入matlab安装目录,输入相同的命令。 它将打开一个精简的matlab命令行窗口,不需要使用matlab桌面的所有功能。

现在我个人认为,集成调试器的matlab编辑器是你的朋友。 它也有emacs键绑定,如果有帮助。 执行命令并查看matlab桌面的结果,然后当matlab运行在文本模式下也更容易。 唯一一次你真的想要使用文本模式是,如果你的matlab代码需要很长时间才能运行,而你只对最终的结果感兴趣。 或者如果你正在运行matlab的多个实例。 文本模式需要更少的内存,在Linux上,您可以轻松地从命令行开始运行并将其放入后台。

实际上,检查matlab的命令行参数。 你可以做其他有趣的事情,比如matlab执行单个函数并退出,la perl,或者像这样将一个脚本重定向到matlab: matlab < script.m

你真的愿意做没有m文件调试器的开发工作吗? 在我看来,这将限制你实际上微不足道的程序。 经过一个非常简短的学习曲线,我想你会发现Matlab集成调试器是非常棒的(我是一个VS人)。

如果你坚持这样做,你最好的选择是将你的m文件编译为可单独运行。 这将需要访问(不便宜)的MATLAB编译器 。

请注意,分布在matlab版本6.5以下的编译器和分布有matlab 7+的编译器(不知道编译器版本号)之间有很大的区别。 在6.5中,编译器生成的c代码,可以分别编辑和编译。 从7开始,编译器没有为此编译,转换或生成任何代码:今天运行一个“编译”程序实际上是在一个名为MCR的虚拟Matlab机器上运行,它包含了几乎所有的matlab功能。 这是一个巨大的 – MCR安装(安装!)上次我检查重130M的。
有关这方面的争论仍然可以在新闻组上找到,但现在并不重要。 实际上,MCR方法似乎更接近您所寻求的。

顺便说一句,对我来说, matlab -nosplash -nodesktop在Windows上完美工作 – 它启动matlab作为控制台,但是这将剥夺你一个文本编辑器调试器…

我会做的是:

  1. 启动MATLAB
  2. 不要在MATLAB中打开.m文件
  3. 在您选择的编辑器中打开该文件
  4. 像往常一样从MATLAB内运行函数

我无法想象为什么这不起作用,因为MATLAB不应该在乎编辑文件的方式。

这不会给你一个“壳”,而是整个图形用户界面,但是我想不出有什么理由说明你为什么不希望这样做。

在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'>自动服务器模式&#x3002;

另一个选择,如果你真的绝望可能是制作一个虚拟机,并在其中安装Linux。 然后,我想有办法配置vim与Matlab很好地工作(我现在是一个emacs人,有emacs的解决方案)。

我也遇到了与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 

有些情况下调用时确实不需要太多的调试,并且在调用之间应该保持Matlab的状态。 一个(唯一的)例子就是Emacs 组织模式 。 它可以用来根据文字编程等来编写与代码交错的文本。 虽然可以在Matlab中使用注释,并发布代码(无论是HTML还是LaTeX),但它却要求保留Emacs的舒适性。

有一个独立的程序可以使用Matlab引擎来评估stdin上收到的命令,并转储结果。 然而,这个特定版本不支持if / else / end或for / end等多行命令。 这是engEvalString的一个限制,一次预期所有事情。 有一个丑陋的解决方法可用于组织模式。

 #+begin_src matlab :session *MATLAB* :exports none :cache no :results value if 3>1 'wow!!!' end #+end_src #+RESULTS: : wow!!!