强制Matlab输出到命令行

强制Matlab输出到命令行,matlab,Matlab,我正在Windows命令提示符下运行MATLAB脚本: "C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m" 测试.m很简单: function test disp('Hello!'); 输出显示在Matlab命令窗口中。有什么方法可以强制输出到windows提示符吗?我不知道在windows中有什么方法可以让Matlab在DOS窗口中实际运行,而这正是在DO

我正在Windows命令提示符下运行MATLAB脚本:

"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
测试.m很简单:

function test
disp('Hello!');

输出显示在Matlab命令窗口中。有什么方法可以强制输出到windows提示符吗?

我不知道在windows中有什么方法可以让Matlab在DOS窗口中实际运行,而这正是在DOS窗口中编写显示所需要的。(仅供参考:您可以在LINUX中运行,但我认为您需要在Windows中运行)

对于在Matlab中运行,我可以想到两个备选方案:

  • -启动时的logfile文件,它会将所有输出记录到您指定的文件中-但是文件写入磁盘的方式和时间是由Matlab控制的,我还没有测试过-如果您的代码做的不多,它可能只在Matlab exit上编写

  • Matlab命令中的日志文件,即
    -r“diary FILE.TXT;test.m;diary OFF”
    -这与上述类似-但使用
    日志
    功能

  • 但是,如果你可以运行编译后的代码,你可以得到你想要的(我知道这是一个很大的如果,因为你可能没有编译器-或者如果你经常想更新
    test.m
    ,这不是最有效的


    当您从DOS提示符运行编译后的代码时,所有终端消息都会写入DOS提示符。我建议您从安装目录中删除
    “splash.png”
    文件,以避免在从DOS运行时以其(可能)名称显示闪屏不需要。

    我在以下位置找到了解决方案:

    为了方便起见,我将在这里复制它。 首先,我需要修改matlab脚本以输出到文本文件:

    function test
    fid=fopen('output.txt','w');
    fprintf(fid,'Hello!');
    fclose(fid);
    
    然后,我应该使用bat文件和一个附加命令运行Matlab,以显示output.txt的内容:

    "C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
    type output.txt
    
    type
    命令将在命令窗口中显示“output.txt”的内容。因此@matlabgui的答案就在这里。谢谢


    这不是一个非常优雅的解决方案,但它可以工作。

    当您从命令行(或任何其他shell或批处理(例如cmd或bat)脚本)调用Matlab时,请使用命令行选项
    -log

    从Matlab 2017b开始,它没有文档记录,但它可以工作


    旁注:
    -nodisplay
    在Windows版本的Matlab中不受支持,但是如果您想阻止它显示图形,请使用
    -noFigureWindows

    自R2019b以来,有一个新的命令行选项,
    -batch
    ,它将输出重定向到命令行,并处理批处理过程的其他内容好的,看

    matlab-批处理“要运行的语句”
    

    这将在没有桌面或启动屏幕的情况下启动MATLAB,将所有输出记录到
    stdout
    stderr
    ,在语句完成时自动退出,并提供一个报告成功或错误的退出代码。

    这不是您想要的答案,但您可以使用
    系统
    命令调用
    echo
    但是这需要你修改你的m文件。@Danny。谢谢你的评论。是的,这不会有帮助,因为
    系统的输出也会进入命令窗口,而不是windows命令提示符。嗨,matlabgui。谢谢你的回答。我试过编译选项。出于某种原因,它比windows命令提示符慢得多批处理Matlab执行。是的,我需要经常更新脚本。到@matlabgui。日志和输出选项有问题。我实际上需要在另一个程序中运行脚本,等待脚本的特定输出继续。它只是不会检查日志文件。无论如何,我感谢您的帮助。请您的Matlab脚本保存一个带有所需输出的文件,并在其他程序中查看该文件。该解决方案将更容易。由于加载MCR所需的时间,编译后的版本将更慢。我需要-log和-wait两个命令,以在控制台中显示输出。