데이터 변경 후 자동으로 플롯 새로 고치기
작업 공간 변수의 데이터를 플로팅하면 플롯에 변수의 복사본이 포함됩니다. 따라서 작업 공간 변수를 변경해도(예: 데이터 추가 또는 삭제) 플롯은 자동으로 업데이트되지 않습니다. 플롯에 변경 사항이 반영되도록 하려면 데이터를 다시 플로팅해야 합니다. 그러나 다음 방법 중 하나를 사용하여, 플롯이 나타내는 작업 공간 변수에 플롯을 연결할 수 있습니다. 플롯과 작업 공간 변수를 연결하면 한쪽에서 데이터를 변경할 경우 다른 쪽에서도 데이터가 변경됩니다.
데이터 연결을 사용하여 플롯을 작업 공간 변수에 연결합니다.
플로팅된 객체의 데이터 소스 속성을(예:
XDataSource
속성) 작업 공간 변수의 이름으로 설정합니다. 그런 다음,refreshdata
함수를 호출하여 간접적으로 데이터 속성을 업데이트합니다. 이 방법을 사용하여 애니메이션을 생성할 수 있습니다.
데이터 연결을 사용하여 플롯 업데이트하기
데이터를 연결하면 플롯이 나타내는 작업 공간 변수와 플롯이 계속 동기화 상태로 유지됩니다.
예를 들어, 반복적으로 pi
의 근삿값을 구해 보겠습니다. 반복 횟수를 나타내는 변수 x
와 근삿값을 나타내는 변수 y
를 생성합니다. x
와 y
의 초기값을 플로팅합니다. 변수가 변경되면 플롯이 업데이트되도록 linkdata on
을 사용하여 데이터 연결을 활성화합니다. 그런 다음, for 루프에서 x
와 y
를 업데이트합니다. 0.5초 간격으로 플롯이 업데이트됩니다.
x = [1 2]; y = [4 4]; plot(x,y); xlim([0 100]) ylim([2.5 4]) xlabel('Iteration') ylabel('Approximation for \pi') linkdata on denom = 1; k = -1; for t = 3:100 denom = denom + 2; x(t) = t; y(t) = 4*(y(t-1)/4 + k/denom); k = -k; end
데이터 소스 속성을 사용하여 플롯 업데이트하기
데이터 연결 기능을 사용하는 대신, 플로팅된 객체의 데이터 소스 속성을 설정하여 플롯과 작업 공간 변수를 동기화 상태로 유지할 수 있습니다. 이 방법을 사용하여 애니메이션을 생성할 수 있습니다.
예를 들어, 반복적으로 pi
의 근삿값을 구해 보겠습니다. 반복 횟수를 나타내는 변수 x2
와 근삿값을 나타내는 변수 y2
를 생성합니다. x2
와 y2
의 초기값을 플로팅합니다. 플로팅된 객체의 데이터 소스 속성을 'x2'
와 'y2'
로 설정하여 플롯을 작업 공간 변수에 연결합니다. 그런 다음, for 루프에서 x2
와 y2
를 업데이트합니다. 각 반복마다 refreshdata
와 drawnow
를 호출하여, 업데이트된 데이터를 기반으로 플롯을 업데이트합니다.
x2 = [1 2]; y2 = [4 4]; p = plot(x2,y2); xlim([0 100]) ylim([2.5 4]) xlabel('Iteration') ylabel('Approximation for \pi') p.XDataSource = 'x2'; p.YDataSource = 'y2'; denom = 1; k = -1; for t = 3:100 denom = denom + 2; x2(t) = t; y2(t) = 4*(y2(t-1)/4 + k/denom); refreshdata drawnow k = -k; end
참고 항목
linkdata
| brush
| refreshdata
| linkaxes