【问题标题】:figures pop up during code is running in matlab在matlab中运行代码时弹出数字
【发布时间】:2013-11-18 18:28:03
【问题描述】:

我正在运行一个大型代码,所以我想确保它开始运行时一切都是正确的。我做的一件事是绘制一些数据,看看它们是否有意义。我有几个这样的情节(图(1),图(2)......),它们都被埋在不同的“如果”句子中。但是我发现只有一些在代码运行期间弹出,其他的直到代码运行完成才出现。我已经检查了所有的 if 语句都是真的。

由于我的代码有点大,我不能把它放在这里。有人可以告诉我影响数字何时弹出的可能原因(在代码运行期间或完成后)?非常感谢!

【问题讨论】:

  • 如果你使用像 plot、imshowpair、scatter 和其他类似的东西。渲染很长,有时它只是暂停并在最后显示。这可能会发生,但并非总是如此。
  • 你可以看看drawnow -> doc
  • pause(0.000001)放在每个情节或imshow之后,然后检查

标签: matlab figure


【解决方案1】:

您可以在代码仍在运行时使用drawnow 函数更新您的数字。如果您希望您的图形窗口在任何给定时间“弹出”,您可能还需要显式调用figure(figNum)

请注意,虽然实时观看数据更新很有趣,但这样做可能会导致严重的性能损失。如果您有长时间运行的循环,您可能会考虑只显示每第 N 次更新,其中 N 是 10、100、1000 或其他一些适当的值:

for iter = 1:1e6
    plot(x,y);
    if ~mod(f0,1000); drawnow; end
end

如果您只是对在开始时进行绘图作为完整性检查感兴趣,您可以在 for 循环之外运行代码的第一次迭代,然后运行 ​​drawnow 以确保它绘图。然后从第二次迭代开始进入 for 循环。与测试 iter==1 相比的优势在于,您不必在每次迭代时都在条件上浪费周期。

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2014-06-23
    • 2012-12-21
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多