Main Content

데이터 변경 후 자동으로 플롯 새로 고치기

작업 공간 변수의 데이터를 플로팅하면 플롯에 변수의 복사본이 포함됩니다. 따라서 작업 공간 변수를 변경해도(예: 데이터 추가 또는 삭제) 플롯은 자동으로 업데이트되지 않습니다. 플롯에 변경 사항이 반영되도록 하려면 데이터를 다시 플로팅해야 합니다. 그러나 다음 방법 중 하나를 사용하여, 플롯이 나타내는 작업 공간 변수에 플롯을 연결할 수 있습니다. 플롯과 작업 공간 변수를 연결하면 한쪽에서 데이터를 변경할 경우 다른 쪽에서도 데이터가 변경됩니다.

  • 데이터 연결을 사용하여 플롯을 작업 공간 변수에 연결합니다.

  • 플로팅된 객체의 데이터 소스 속성을(예: XDataSource 속성) 작업 공간 변수의 이름으로 설정합니다. 그런 다음, refreshdata 함수를 호출하여 간접적으로 데이터 속성을 업데이트합니다. 이 방법을 사용하여 애니메이션을 생성할 수 있습니다.

데이터 연결을 사용하여 플롯 업데이트하기

데이터를 연결하면 플롯이 나타내는 작업 공간 변수와 플롯이 계속 동기화 상태로 유지됩니다.

예를 들어, 반복적으로 pi의 근삿값을 구해 보겠습니다. 반복 횟수를 나타내는 변수 x와 근삿값을 나타내는 변수 y를 생성합니다. xy의 초기값을 플로팅합니다. 변수가 변경되면 플롯이 업데이트되도록 linkdata on을 사용하여 데이터 연결을 활성화합니다. 그런 다음, for 루프에서 xy를 업데이트합니다. 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

Line plot after animation

데이터 소스 속성을 사용하여 플롯 업데이트하기

데이터 연결 기능을 사용하는 대신, 플로팅된 객체의 데이터 소스 속성을 설정하여 플롯과 작업 공간 변수를 동기화 상태로 유지할 수 있습니다. 이 방법을 사용하여 애니메이션을 생성할 수 있습니다.

예를 들어, 반복적으로 pi의 근삿값을 구해 보겠습니다. 반복 횟수를 나타내는 변수 x2와 근삿값을 나타내는 변수 y2를 생성합니다. x2y2의 초기값을 플로팅합니다. 플로팅된 객체의 데이터 소스 속성을 'x2''y2'로 설정하여 플롯을 작업 공간 변수에 연결합니다. 그런 다음, for 루프에서 x2y2를 업데이트합니다. 각 반복마다 refreshdatadrawnow를 호출하여, 업데이트된 데이터를 기반으로 플롯을 업데이트합니다.

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

Line plot after animation

참고 항목

| | |

관련 항목