Main Content

drawnow

Figure 업데이트 및 콜백 처리

설명

예제

drawnow는 Figure를 업데이트하고 보류 중인 콜백을 모두 처리합니다. 그래픽스 객체를 수정한 후, 업데이트 내용을 화면에 즉시 표시하려면 이 명령을 사용하십시오.

예제

drawnow limitrate는 업데이트 수를 초당 20프레임으로 제한합니다. 마지막 업데이트 이후로 50밀리초가 지나지 않았거나 그래픽스 렌더러가 이전 변경 내용을 처리 중인 경우 drawnow는 새로운 업데이트를 삭제합니다. 루프에서 그래픽스 객체를 업데이트하고 화면에 모든 업데이트를 표시할 필요가 없는 경우 이 명령을 사용하십시오. 업데이트를 표시하지 않고 건너뛰면 애니메이션 속도가 향상될 수 있습니다. 보류 중인 콜백이 처리되므로 애니메이션을 실행하는 중에 Figure와 상호 작용할 수 있습니다.

drawnow nocallbacks는 다음 전체 drawnow 명령이 실행될 때까지 ButtonDownFcn과 같은 콜백을 미룹니다. 콜백으로 인해 코드 실행이 중단되지 않도록 하려면 이 옵션을 사용하십시오. 콜백을 미루면 마우스 클릭이나 Figure 크기 조정과 같은 Figure 상호 작용이 일시적으로 비활성화됩니다. 콜백을 미루더라도 애니메이션 속도에는 영향을 미치지 않습니다.

drawnow limitrate nocallbacks는 업데이트 수를 초당 20프레임으로 제한하고, 렌더러가 사용 중인 경우 업데이트를 건너뜁니다. 또한 이 구문은 콜백으로 인해 코드가 중단되는 것을 방지합니다. 코드가 중단이 되면 Figure 상호 작용이 일시적으로 비활성화되는데 이 또한 방지됩니다.

drawnow update는 렌더러가 사용 중인 경우 업데이트를 건너뛰고 콜백을 미룹니다. 이 구문은 권장되지 않습니다. limitrate 옵션을 대신 사용하십시오.

drawnow expose는 Figure를 업데이트하지만, 콜백을 미룹니다. 이 구문은 권장되지 않습니다. nocallbacks 옵션을 대신 사용하십시오.

예제

모두 축소

2,000개의 데이터 점을 누적하면서 점점 길어지는 선의 애니메이션을 만듭니다. 루프의 각 반복 후에 화면에 변경 내용을 표시하려면 drawnow를 사용하십시오.

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,2000);

for k = 1:length(x)
    y = sin(x(k));
    addpoints(h,x(k),y);
    drawnow
end

10,000개의 데이터 점을 누적하면서 점점 길어지는 선의 애니메이션을 만듭니다. 점 개수가 10,000개이므로, 각각의 업데이트를 화면에 모두 그리는 것은 속도가 느립니다. drawnow limitrate를 사용해 업데이트 수를 제한하여 더욱 빠르고 부드러운 애니메이션을 만듭니다. 그런 다음, 루프가 끝나면 drawnow를 호출하여 화면에 최종 업데이트를 표시합니다.

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,10000);

for k = 1:length(x)
    y = sin(x(k));
    addpoints(h,x(k),y);
    drawnow limitrate
end
drawnow

애니메이션 루프를 실행하기 전에 모든 데이터를 계산합니다.

h = animatedline;
axis([0 4*pi -1 1])
x = linspace(0,4*pi,10000);
y = sin(x);

for k = 1:length(x)
    addpoints(h,x(k),y(k));
    drawnow limitrate
end
drawnow

긴 계산을 할 경우, 데이터를 미리 계산하면 성능이 향상될 수 있습니다. 사전에 계산하면 중단 없이 계산을 실행하므로 계산 시간이 최소화됩니다. 또한, 애니메이션 루프에서 그래픽스 코드에만 집중함으로써 부드러운 애니메이션을 만드는 데 도움이 됩니다.

세부 정보

모두 축소

drawnow와 동일한 동작

다음 동작은 전체 drawnow 명령을 호출하는 것과 동일합니다.

  • nocallbacks 옵션은 대기열에 항상 인터럽트 콜백을 추가합니다. 인터럽트 콜백을 삭제하려면 Interruptible 속성과 BusyAction 속성을 대신 사용하십시오.

확장 기능

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2006a 이전에 개발됨