代码之家  ›  专栏  ›  技术社区  ›  Rook

命令上的matlab(winxp)

  •  5
  • Rook  · 技术社区  · 16 年前

    我刚开始用matlab做实验,因为我已经习惯了vim的界面,所以我尽量避免使用matlab的编辑器。困扰我的是,每次我启动一个.m文件时,它都会显示接口。

    有没有一种方法可以从一个命令行开始test.m,并让它在一个命令上输出,就像通常在matlab环境中那样。 比如“matlab shell”(比如python,只有matlab)?

    6 回复  |  直到 13 年前
        1
  •  10
  •   Dima    16 年前

    要回答您的问题,请按如下方式启动matlab:

    matalb -nodesktop -nosplash

    这对Linux和Windows都有效。在Linux上,您可以在命令提示符下键入此命令,Matlab将以文本模式在同一命令窗口中运行。所以你可以得到你想要的“matlab shell”。在Windows上,cd输入安装matlab的目录,然后键入相同的命令。它将打开一个精简的matlab命令行窗口,没有matlab桌面的所有铃声和口哨。

    现在在我个人看来,Matlab编辑器及其集成的调试器是您的朋友。如果这有帮助的话,它还具有Emacs键绑定。当Matlab以文本模式运行时,在Matlab桌面上执行命令和查看结果也更容易。您真正想要使用文本模式的唯一时间是,如果您的matlab代码需要很长时间才能运行,并且您只对最终结果感兴趣。或者如果您运行的是matlab的多个实例。文本模式占用的内存要少得多,在Linux上,您可以很容易地从命令行启动一次运行,并将其置于后台。

    实际上,检查matlab的命令行参数。您还可以做其他有趣的事情,比如让matlab执行单个函数并退出、la perl,或者将脚本重定向到matlab中,如下所示: matlab < script.m

        2
  •  5
  •   Ofek Shilon    16 年前

    你真的愿意在没有m文件调试器的情况下进行开发工作吗?在我看来,这会限制你使用几乎微不足道的程序。经过很短的学习曲线后,我认为您会发现Matlab集成调试器非常棒(我是一个vs-person)。

    如果您坚持这样做,您最好的选择是编译您的M文件,使其可以独立运行。那就需要进入(不便宜的) matlab compiler .

    注意,Matlab版本高达6.5的编译器与Matlab 7+版本的编译器之间存在显著差异(不知道编译器版本号)。在6.5中,编译器生成了C代码,可以单独编辑和编译。从7开始,编译器就没有编译、转换或任何代码生成:今天运行一个“编译”程序实际上是在一个名为 MCR -它包含了几乎所有的matlab功能。它是一个巨大的单MCR安装程序(安装程序!)上次我查的时候有130米重。
    关于这方面的一些争论仍然可以在新闻组上找到,但现在这并不重要。实际上,MCR方法似乎更接近于您所寻求的。

    顺便说一句,对我来说 matlab -nosplash -nodesktop 在Windows上工作得很好-它启动了Matlab作为控制台,但这会剥夺你们两个文本编辑器的使用权。 调试器…

        3
  •  2
  •   Hannes Ovrén    16 年前

    我要做的是:

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

    我无法想象为什么Matlab不工作的原因,因为Matlab不应该关心用于编辑文件的内容。

    这不会给你一个“外壳”,而是整个图形用户界面,但我想不出任何理由,为什么你不想拥有它,如果它是可用的。

        4
  •  0
  •   Mr Fooz    16 年前

    在Linux环境中,可以以文本模式启动matlab

    matlab -nosplash -nodesktop 
    

    但这在窗户上不起作用。 它在当前外壳中启动。在Windows上,这将打开一个新的纯文本窗口。我不知道如何让它在Windows的当前控制台中运行。

    也许有什么方法可以连接到它,运行它在http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/访问/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的解决方案)。

        5
  •  0
  •   Nathan Fellman    15 年前

    我和基古里有同样的问题。我需要用python驱动matlab,所以我找到了这个解决方案:

    在蟒蛇中:

    import os
    
    os.chdir('W:\\monrépertoire')
    
    os.spawnl(os.P_NOWAIT, 'monscript.bat')
    

    在monscript.bat中:

    matlab.exe -r interp_3D  -nodesktop –nosplash
    
        6
  •  0
  •   mlt    13 年前

    有些情况下,确实不需要太多的调试,调用之间应保留matlab的状态。一个(唯一的?)例如Emacs org-mode . 它可以用来写与代码交错的文本,根据 literate programming etc . 虽然可以在matlab中使用注释, publish code 不管是HTML还是LaTex,它都需要让Emacs保持舒适。

    有一个 standalone program available 它使用matlab引擎评估在stdin上接收到的命令,并转储结果。然而,这个特定版本缺少对多行命令的支持,比如if/else/end或for/end。这是一个限制 engEvalString 希望一切都能同时发生。有一个 ugly workaround available 这使得它 usable 足以支持组织模式。

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