2017-04-14 3 views
0

현재 그림을 만들고 플롯을 추가 한 다음 범례 항목을 추가하는 반복 프로세스를 수행하고 있습니다. 일련의 명령으로이 작업을 수행하고 있지만 아래 스크립트에서 모두 수집했습니다. 실제 플로팅은 내가 제어 할 수 없기 때문에 물리적으로 반복해야하는 외부 프로세스에 따라 다르므로 스크립트가 될 수 없습니다.matlab에서 범례에 후속 플롯을 추가합니다.

>> x = [0:1:10] 
>> y1 = [] 
>> y2 = [] 
>> y3 = [] 
>> figure 
>> hold on 

>> for i = 1:size(x,2) 
    y1(i) = x(i)^2 
end 

>> plot(x,y1,'b') 
>> legend('x^2') 

>> for i = 1:size(x,2) 
    y2(i) = 2*x(i)^2 
end 

>> plot(x,y2,'r') 
>> legend('2*x^2') 

>> for i = 1:size(x,2) 
    y3(i) = 3*x(i)^2 
end 

>> plot(x,y3,'g') 
>> legend('3*x^2') 

예상 한대로 관심있는 세 가지 기능이 있지만 마지막 항목 만 포함하는 범례가있는 그림이 만들어집니다. 나는 이것을 일련의 명령으로 할 때마다 매번 새로운 아이템과 새로운 아이템으로 새로운 전설을 만들어야하기 때문에 행복하지 않습니다.

>> x = [0:1:10] 
>> y1 = [] 
>> y2 = [] 
>> y3 = [] 
>> figure 
>> hold on 

>> for i = 1:size(x,2) 
    y1(i) = x(i)^2 
end 

>> plot(x,y1,'b') 
>> legend('x^2') 

>> for i = 1:size(x,2) 
    y2(i) = 2*x(i)^2 
end 

>> plot(x,y2,'r') 
legend('x^2','2*x^2') 

>> for i = 1:size(x,2) 
    y3(i) = 3*x(i)^2 
end 

>> plot(x,y3,'g') 
>> legend('x^2', 2*x^2','3*x^2') 

이전의 모든 컨텐츠를 다시 작성할 필요없이 현재의 전설에 가장 최근에 추가 된 플롯을 추가 할 수있는 효율적인 방법은 무엇입니까

을 다음과 같이 원하는 결과를 달성하기 위해 명령을 수정해야합니다? 감사.

답변

1

범례에 추가 할 수는 없지만 이전에 무엇이 왔는지 알 필요없이 기억할 수 있습니다. 이것은 범례에 변수를 할당하고 그 String 속성을 사용하여 이전 항목을 호출하는 방식에 의존합니다.

% define plotting variables here 
x=0:0.1:1; y1=x.^2; y2=2*x.^2; y3=3*x.^2; 
% initialise figure 
figure; hold on; 
% plot 1 
plot(x, y1, 'b'); 
L = legend('x^2'); 
% plot 2 
plot(x, y2, 'r'); 
L = legend([L.String, {'2*x^2'}]); 
% plot 3 
plot(x, y3, 'k'); 
L = legend([L.String, {'3*x^2'}]); 

결과 :

plot

관련 문제