在for循环中绘制,但仅绘制每个x-second/x-iteration

eyj*_*jin 0 matlab plot for-loop

我有一个for循环并在其中计算一些图形.迭代次数非常多(> 100000),所以我不想绘制每个"帧",而是每隔10ms或10000次迭代拍摄一个"快照"(更新相同图).它不一定准确.

有这种问题的功能吗?

Dan*_*Dan 5

这通常通过将模运算用作循环内的条件来实现.保持1在每次循环迭代时递增的计数器变量,使用:

if mod(counter, period) == 0
    % update your plot
end
Run Code Online (Sandbox Code Playgroud)

仅在每次period迭代时运行更新代码.因此,如果您想在每次1000迭代时更新您的绘图

period = 1000;
for counter = 1:100000
    % your calcs
    if mod(counter, period) == 0
        % update your plot
    end
end
Run Code Online (Sandbox Code Playgroud)

  • 这是最简单,最好的方法.我想补充一点,在我捕获这些"不断发展的"数据快照的许多情况下,我制作的电影能够轻松理解随时间的变化.您可以使用MATLAB builtins`getframe()`和`movie()`轻松地将这些图形快照转换为电影.请参阅此处的示例:http://www.mathworks.com/help/matlab/ref/getframe.html (3认同)
  • 此外,[`drawnow`](http://www.mathworks.com/help/matlab/ref/drawnow.html?searchHighlight=drawnow)函数有时也很有用 (3认同)