将 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 输出保存到文件,而不是在屏幕上显示的主要内容,如果未能解决你的问题,请参考以下文章