强制Matlab输出到命令行
我正在Windows命令提示符下运行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
"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中运行,我可以想到两个备选方案:
-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两个命令,以在控制台中显示输出。