2017-11-30 6 views
1

배열에 저장된 데이터를 플롯하려고합니다. A에는 세 개의 열이 있으며 각 열은 다른 데이터 집합을 나타냅니다. 다음 코드는 잘 작동 :MATLAB - 매트릭스로 플롯 업데이트

A = [0 0 0; 
    0 1 0]; 
h = plot(A) 

그러나, 새로운 라인이 A에 추가하고 음모를 업데이트해야한다.

A = [0 0 0; 
    0 1 0; 
    1 2 0]; 
set(h,'XData',A) 

이 나에게 오류가 발생합니다 : 당신이 set'XData'와 플롯을 업데이트 할 수 읽기 오류 을 설정하여. 값은 열 또는 행 벡터이어야합니다. 새 플롯 대신 데이터를 새로 고치는 방법이 있습니까? 다음은 잘 작동합니까?

A = [0 0 0; 
    0 1 0; 
    1 2 0]; 
h = plot(A) 

답변

4

초기 코드

A = [0 0 0; 
    0 1 0]; 
h = plot(A) 

세 라인 오브젝트 A의 각 열에 대해 하나씩 생성 (h 크기 3 × 1이 있는지 확인). 따라서 루프의 각 줄을 업데이트해야합니다. 또한, 모두 'XData''YData' 속성을 업데이트해야합니다

for k = 1:numel(h) 
    set(h(k), 'XData', 1:size(A,1), 'YData', A(:,k)) 
end 
2

당신은 linkdata (https://mathworks.com/help/matlab/ref/linkdata.html)를 사용할 수 있습니다

A = [ 
    0 0 0; 
    0 1 0 
]; 

plot(A); 
linkdata on; 

A = [ 
    0 0 0; 
    0 1 0; 
    1 2 0 
]; 

줄거리를 삭제 후 즉시 다시 그립니다 또 다른 방법 :

h = plot(x,y); 

% modify data... 

delete(h); 
h = plot(x,y);