我有一个有很多次迭代的模拟。有一些可变矩阵,我希望在模拟发生时监控这些值。有什么好方法可以做到这一点?
答案 0 :(得分:1)
我经常使用两种工具来做这样的事情。
<强> 1。每次迭代都会擦除的迭代输出
这适用于您希望监视标量函数输出的优化。
在我的while
循环之前,我将在screenOut = [];
中定义screenOutFormat
和输出公式。在我的循环中,在该迭代计算完成后,我会添加像
if iter <=2
bspace = [];
else
bspace = repmat('\b', [1 length(screenOut)]);
end
screenOut = sprintf(screenOutFormat, iter, estimatedValue);
fprintf([bspace screenOut]);
通过这种方式,您可以在不破坏命令窗口历史记录的情况下查看起点和每次迭代。
<强> 2。图形的动态更新
如果你有可以绘制的东西,这很有效。
在循环开始之前,使用
设置绘图figH = figure();
progPlot = plot(Y);
然后每次迭代都可以
progPlot.YData = Y;
drawnow();
通过这种方式,您可以继续绘制您关心的估算值。
如果你有一个你关心的矩阵,我建议你选择你真正感兴趣的元素并使用#1。但是如果你可以绘制更有用的东西,那么在长期估算/模拟程序中观察#2通常会更有趣。