MATLAB откладывает вызовы disp при выполнении сложных вычислений. Это почему? - PullRequest
4 голосов
/ 28 апреля 2010

Я реализую алгоритм в MATLAB. Помимо прочего, он рассчитывает кратчайшие пути и т. Д., Поэтому он довольно требователен для моего старого компьютера. Я добавил disp () вызовов через программу, чтобы посмотреть, что происходит все время.

Однако при запуске в особенно тяжелом цикле for disp(), похоже, не вызывается до тех пор, пока цикл не закончится, даже если он предшествует циклу. Это почему? Я думал, что MATLAB действительно выполнялся последовательно, или я просто подавил его слишком большим количеством вычислений, и вызовы disp() получают самый низкий приоритет?

1 Ответ

7 голосов
/ 28 апреля 2010

Я почти уверен, что это из-за EDT.

Для этой функции drawnow () . См. статью Яира Альтмана для хорошего объяснения.

Краткое описание: графика MATLAB - это Java Swing, а операции выполняются в специальном потоке - потоке обработки событий (EDT). Вызов drawnow(); очищает очередь событий и обновляет окно рисунка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...