我在MATLAB中实现了一个算法。除此之外,它计算最短路径等,因此对我的旧计算机要求很高。我已经通过程序进行disp()调用,以便随时查看正在发生的事情。
然而,当一个特殊的重循环开始时,disp()
看起来不会被调用,直到循环结束,即使它在循环之前。这是为什么?我认为MATLAB实际上是按顺序执行的,或者我只是用太多的计算来阻塞它并且disp()
调用的优先级最低?
答案 0 :(得分:7)
我几乎可以肯定这是因为EDT。
这是函数drawnow()的用途。有关详细说明,请参阅article of Yair Altman。
总结:MATLAB图形是Java Swing,操作发生在一个特殊的线程 - 事件调度线程(EDT)上。调用drawnow();
刷新事件队列并更新图窗口。