我正在 MATLAB 中实现一个算法。除其他事项外,它还计算最短路径等,因此对我的旧计算机来说要求很高。我输入了disp()调用整个程序以查看一直发生的情况。
然而,当开始一个特别繁重的 for 循环时,disp()
似乎在循环结束之前不会被调用,即使它出现在循环之前。这是为什么?我以为 MATLAB 真的是按顺序执行的,还是我只是用太多的计算阻塞了它,disp()
调用的优先级最低?
最佳答案
我几乎可以肯定这是因为 EDT。
这就是函数 drawnow()是为了。参见 article of Yair Altman为了很好的解释。
总结:MATLAB 图形是 Java Swing,操作发生在一个特殊的线程上 - 事件调度线程 (EDT)。调用 drawnow();
刷新事件队列并更新图形窗口。
关于algorithm - MATLAB 在进行要求苛刻的计算时会推迟 disp 调用。这是为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2728292/