Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 基于cmd的Matlab(winxp)_Windows_Command Line_Cmd_Matlab - Fatal编程技术网

Windows 基于cmd的Matlab(winxp)

Windows 基于cmd的Matlab(winxp),windows,command-line,cmd,matlab,Windows,Command Line,Cmd,Matlab,我刚刚开始用Matlab做一些实验,因为我习惯了Vim的界面,所以我尽量远离Matlab的编辑器。让我烦恼的是,每次我启动一个.m文件时,它都会打开接口 是否有一种方法可以从cmd行启动test.m,并让它在cmd上输出,就像在Matlab环境中通常所做的那样。 类似于“MatlabShell”(类似Python,只有Matlab)?在Linux环境中,Matlab可以以文本模式启动 matlab -nosplash -nodesktop 但这在Windows上不起作用。在当前shell中启

我刚刚开始用Matlab做一些实验,因为我习惯了Vim的界面,所以我尽量远离Matlab的编辑器。让我烦恼的是,每次我启动一个.m文件时,它都会打开接口

是否有一种方法可以从cmd行启动test.m,并让它在cmd上输出,就像在Matlab环境中通常所做的那样。
类似于“MatlabShell”(类似Python,只有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+命令+行+windows'>自动化服务器模式


如果你真的非常绝望,另一个选择可能是制作一个虚拟机并在其中安装linux。然后我想象有一些方法可以配置vim,使其与Matlab很好地协同工作(我现在是一个emacs人员,有针对emacs的解决方案)。

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

如果您坚持这样做,最好的选择是编译m文件,使其能够独立运行。这将需要访问(而不是便宜的)

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

顺便说一句,对我来说,matlab-nosplash-nodesktop在windows上工作得非常好-它将matlab作为控制台启动,但这将剥夺您的文本编辑器和调试器…

我要做的是:

  • 启动MATLAB
  • 不要在matlab中打开.m文件
  • 在所选编辑器中打开该文件
  • 像往常一样在MATLAB中运行函数
  • 我无法想象为什么这不起作用,因为MATLAB不应该关心用于编辑文件的内容


    这不会给你一个“shell”,而是整个GUI,但我想不出你为什么不想拥有它,如果它可用的话。

    要回答你的问题,请像这样启动matlab:

    matalb-nodesktop-nosplash

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

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


    事实上,请检查matlab的命令行参数。您可以做其他有趣的事情,比如让matlab执行一个函数并退出,一个la perl,或者像这样将脚本重定向到matlab:
    matlab
    我和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等多行命令。这是一个要求所有东西同时出现的限制。对于组织模式来说,有一个足够的解决方案

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

    是的,它在windows上工作。它将打开一个简单的matlab命令窗口。如果你的计算机速度慢,你可能不需要整个GUI。