强制MATLAB输出到命令行



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

"C:Program FilesMATLABR2014Bbinmatlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"

test.m很简单:

function test
disp('Hello!');

输出显示在MATLAB命令窗口中。有什么办法可以将输出强制输出到Windows提示?

从命令行调用MATLAB(或任何其他外壳或批次(例如CMD或BAT)脚本)时,请使用命令行选项-log
它没有记录到MATLAB 2017b,但起作用。

旁注:-nodisplay在Windows版本的MATLAB中不支持,但是如果要防止其显示图形,请改用-noFigureWindows

自R2019b以来,有一个新的命令行选项-batch,它将输出重定向到命令行并处理其他内容以进行批处理处理。请参阅Windows的文档。

matlab -batch "statement to run"

这将启动MATLAB,而无需桌面或Splash屏幕,将所有输出记录到stdoutstderr,在语句完成后自动退出,并提供退出代码报告成功或错误。

我不知道在Windows中使用MATLAB在DOS窗口中实际运行的方法,这是您需要写出显示的内容。(仅供参考:您可以在Linux中 - 但我认为您需要在Windows中运行)。

对于在MATLAB中运行,您可以想到2个替代方案:

  1. -logfile文件启动时,它将将所有输出记录到您指定的文件 - 但是,将文件写入磁盘的方式以及何时由Matlab控制,我没有测试以查看 - 如果您的代码不使用't要做很多事情,只能写在matlab出口上。

  2. 您的matlab命令中的日记文件,即 -r "diary FILE.TXT; test.m; diary OFF"-这与上述类似 - 但使用 diary函数。

但是,如果您可以运行代码编译(我知道这很大,因为您可能没有编译器,或者您定期更新test.m,这是很大的最有效的...

从DOS提示符中运行编译代码时,所有终端消息都写入DOS提示符。我建议这是否合适的一件事是从安装目录中删除"splash.png"文件,以避免从DOS运行时显示溅起屏幕。

我找到了一个解决方案:

https://www.mathworks.com/matlabcentral/answers/91607-how-can-can-i-----------------------------------8-r2009a-i#wonse_100958

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

function test
fid=fopen('output.txt','w');
fprintf(fid,'Hello!');
fclose(fid);

然后,我应该使用一个附加命令的BAT文件运行MATLAB,以显示output.txt的内容:

"C:Program FilesMATLABR2014Bbinmatlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
type output.txt

type命令将在命令窗口中显示" output.txt"的内容。因此,@matlabgui的答案几乎在那里。谢谢。

这不是一个非常优雅的解决方案,但可以使用。

最新更新