我正在从Windows命令提示符运行MATLAB脚本:
_cat/nodes
test.m很简单:
"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
输出显示在Matlab命令窗口中。有什么办法可以强制输出到Windows提示符吗?
答案 0 :(得分:2)
当您从命令行(或任何其他shell或批处理(例如cmd或bat)脚本)调用Matlab时,请使用命令行选项-log
。
它没有像Matlab 2017b那样记录,但它有效。
附注:Windows版本的Matlab不支持-nodisplay
,但如果您想阻止它显示数字,请改用-noFigureWindows
。
答案 1 :(得分:1)
我不知道在Windows中这样做的方法是让Matlab实际运行在DOS窗口中,这就是显示在其中所需的内容。 (仅供参考:您可以在LINUX中使用 - 但我认为您需要在Windows中运行。)
对于在Matlab中运行,你有两个我能想到的选择:
-logfile FILE在启动时将所有输出记录到您指定的文件中 - 但是文件写入磁盘的方式和时间由Matlab控制,我没有测试过 - 如果您的代码没有'做得多,它可能只写在Matlab出口。
Matlab命令中的日记文件,即..........
<Results>
<CmdID>11</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>11</CmdRef>
<Item>
<Source>
<LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/29B91D81-19CB-41F7-97F3-FD56D2707EE9_cg4300pk5pzh2/LastError</LocURI>
</Source>
<Meta>
<Format xmlns="syncml:metinf">int</Format>
</Meta>
<Data>-2147009296</Data>
</Item>
</Results>
<Results>
<CmdID>13</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>12</CmdRef>
<Item>
<Source>
<LocURI>./User/Vendor/MSFT/EnterpriseModernAppManagement/AppInstallation/29B91D81-19CB-41F7-97F3-FD56D2707EE9_cg4300pk5pzh2/LastErrorDesc</LocURI>
</Source>
<Data>error 0x8020001B: Opening the package from location lobApp.appxbundle failed.</Data>
</Item>
</Results>
...........
- 这与上面类似 - 但使用-r "diary FILE.TXT; test.m; diary OFF"
函数。
但是你可以得到你想要的东西如果你可以运行编译的代码(我知道这很重要,如果你没有编译器 - 或者你经常想要更新{{1}这不是最有效的......
当您从DOS提示符运行已编译的代码时,所有终端消息都将写入DOS提示符。我建议如果这是合适的一件事是从安装目录中删除diary
文件,以避免从DOS运行时显示启动画面(可能)不需要。
答案 2 :(得分:1)
我找到了一个解决方案:
为方便起见,我会在这里复制一下。 首先,我需要修改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
命令将显示&#39; output.txt&#39;的内容。在命令窗口中。所以来自@matlabgui的回答几乎就在那里。谢谢。
这不是一个非常优雅的解决方案,但它确实有效。
答案 3 :(得分:0)
自R2019b起,有一个新的命令行选项-batch
,该选项将输出重定向到命令行并处理其他内容以进行批处理。参见the documentation for Windows。
matlab -batch "statement to run"
这将在没有桌面或初始屏幕的情况下启动MATLAB,将所有输出记录到stdout
和stderr
,在语句完成时自动退出,并提供报告成功或错误的退出代码。