2010-04-28 2 views
4

MATLAB에서 알고리즘을 구현 중입니다. 무엇보다도 가장 짧은 경로 등을 계산하므로 오래된 컴퓨터를 요구합니다. 나는 항상 프로그램을 통해 disp() 전화를 걸어 어떤 일이 일어나고 있는지를 확인했습니다.MATLAB은 까다로운 계산을 수행 할 때 disp 호출을 연기합니다. 왜 그런가요?

그러나 특히 무거운 for 루프에서 시작하면 disp()은 루프 이전에 오더라도 루프가 끝날 때까지 호출되지 않는 것처럼 보입니다. 왜 그런가요? 나는 MATLAB이 순차적으로 순차적으로 실행되고 있다고 생각 했었습니다. 아니면 너무 많은 계산으로 막혀 있었고 disp() 호출이 최하위 우선 순위를 얻었습니까?

답변

7

나는 EDT 때문에 거의 확실하다.

이것은 drawnow()의 기능입니다. 좋은 설명은 article of Yair Altman을 참조하십시오.

요약 : MATLAB 그래픽은 Java Swing이며 작업은 특수 스레드 인 Event Dispatch Thread (EDT)에서 발생합니다. drawnow();을 호출하면 이벤트 큐가 플러시되고 Figure 창이 업데이트됩니다.

+0

정확히 일치하는 것 같습니다. drawnow(); disp 함수가 disp를 출력 한 후 for 루프를 수행 한 후 나타납니다. 좋은! –

관련 문제