将 Matlab 输出保存到文件,而不是在屏幕上显示

Posted

技术标签:

【中文标题】将 Matlab 输出保存到文件,而不是在屏幕上显示【英文标题】:save Matlab output to file, instead of displaying on screen 【发布时间】:2013-11-28 16:55:19 【问题描述】:

我使用了一些优化功能,它将迭代步骤的结果显示在屏幕上。如何将迭代结果保存到文件,而不是在屏幕上显示?

我提到了 fprintf,但在我的情况下它不起作用。日记也不起作用,因为我不想在屏幕上显示。

非常感谢。

【问题讨论】:

当你说显示它:文本?图片 ?矩阵? version predcorr gam expon scale_data NT 1 0.000 1 0 it pstep dstep pinfeas dinfeas gap prim-obj dual-obj cputime ------------------- ------------------------------------------------ 0| 0.000|0.000|1.6e+00|5.2e+00|1.8e+06| 0.000000e+00 0.000000e+00| 0:0:00|胆 1 1 不是简单的单一格式,而是混合了文本、行和数字向量。 @user3046721:哪些代码行产生了输出?请提供一段代码来说明为什么日记不起作用。我认为这很容易适应。 【参考方案1】:

简单的事情,

创建一个日志文件。开始你的功能:

fid = fopen(logFile,'w+');

当你想展示一些你可以做的事情时:

fprintf(fid,'This is my result %d.\n',100); % Will print in the file
fprintf('This is my result %d.\n',100); % Will print on screen

记得在你的函数结束时关闭它:

fclose(fid);

【讨论】:

但是如何将输出存储为变量并将其传递给 fprintf? 你能提供一些代码吗?如果没有你已经做过的对不起,我无法帮助你。 是的。我正在使用 CVX (cvxr.com/cvx)。代码是: cvx_begin variable beta(d) minimize((Xbeta-y)'*(Xbeta-y) + Lambda1*norm(beta,1)) cvx_end 它将打印结果每次迭代 我以前从未使用过它。但是如果你查看 cvx\sdpt3\Solver 和 cvx\sdpt3\HSSolver 你有 2 个包含所有 printf 的主要函数。你需要修改所有这些打印以获得你想要的。【参考方案2】:

在调用函数以捕获其输出时使用 evalc。

T = evalc('string to evaluate')

这将捕获通常会在命令窗口中打印的所有输出字符串。然后您可以将 T 写入文件。

【讨论】:

以上是关于将 Matlab 输出保存到文件,而不是在屏幕上显示的主要内容,如果未能解决你的问题,请参考以下文章

输出 XML 文件,不保存

将输出错误消息保存到 MATLAB 中的文件

将屏幕(程序)输出保存到文件

从 Matlab P 文件中保存图形 EPS 而不显示

屏幕截图窗口窗体

在MATLAB中将输出数字保存到png文件