【发布时间】:2010-04-28 09:41:32
【问题描述】:
我正在 MATLAB 中实现一个算法。除其他外,它会计算最短路径等,因此对我的旧计算机要求很高。我已经在整个程序中输入了disp() 电话,以查看一直在发生的事情。
但是,当从一个特别重的 for 循环开始时,disp() 似乎在循环结束之前不会被调用,即使它在循环之前也是如此。这是为什么?我认为 MATLAB 真的是按顺序执行,还是我只是因为计算太多而窒息它,disp() 调用的优先级最低?
【问题讨论】:
我正在 MATLAB 中实现一个算法。除其他外,它会计算最短路径等,因此对我的旧计算机要求很高。我已经在整个程序中输入了disp() 电话,以查看一直在发生的事情。
但是,当从一个特别重的 for 循环开始时,disp() 似乎在循环结束之前不会被调用,即使它在循环之前也是如此。这是为什么?我认为 MATLAB 真的是按顺序执行,还是我只是因为计算太多而窒息它,disp() 调用的优先级最低?
【问题讨论】:
我几乎可以肯定这是因为 EDT。
这就是drawnow() 的功能。请参阅article of Yair Altman 以获得很好的解释。
总结:MATLAB 图形是 Java Swing,操作发生在一个特殊的线程 - 事件调度线程 (EDT) 上。调用drawnow(); 刷新事件队列并更新图形窗口。
【讨论】: