【问题标题】:MATLAB postpones disp calls when doing demanding calculations. Why is that?MATLAB 在执行要求苛刻的计算时会推迟 disp 调用。这是为什么?
【发布时间】:2010-04-28 09:41:32
【问题描述】:

我正在 MATLAB 中实现一个算法。除其他外,它会计算最短路径等,因此对我的旧计算机要求很高。我已经在整个程序中输入了disp() 电话,以查看一直在发生的事情。

但是,当从一个特别重的 for 循环开始时,disp() 似乎在循环结束之前不会被调用,即使它在循环之前也是如此。这是为什么?我认为 MATLAB 真的是按顺序执行,还是我只是因为计算太多而窒息它,disp() 调用的优先级最低?

【问题讨论】:

    标签: algorithm matlab


    【解决方案1】:

    我几乎可以肯定这是因为 EDT。

    这就是drawnow() 的功能。请参阅article of Yair Altman 以获得很好的解释。

    总结:MATLAB 图形是 Java Swing,操作发生在一个特殊的线程 - 事件调度线程 (EDT) 上。调用drawnow(); 刷新事件队列并更新图形窗口。

    【讨论】:

    • 似乎正是如此。放入 drawow();在 disp 使函数输出 disp 然后执行 for 循环之后。不错!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多