在matlab中将后续绘图添加到图例中

在matlab中将后续绘图添加到图例中,matlab,plot,Matlab,Plot,我目前正在做一个迭代过程,创建一个图形,添加一个绘图,然后添加一个图例项。我把它作为一系列命令来执行,但在下面的脚本中收集了所有这些命令。请注意,这不能是脚本,因为实际打印取决于外部进程,我必须进行物理迭代,因为我无法控制它们 >> x = [0:1:10] >> y1 = [] >> y2 = [] >> y3 = [] >> figure >> hold on >> for i = 1:size(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('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')

将最近添加的绘图添加到当前图例中而不必重写之前的所有内容的有效方法是什么?谢谢。

你不能只是附加到一个传奇,但你可以回忆起它,而不必知道之前发生了什么。这依赖于将图例指定给变量,并使用其字符串属性调用以前的条目

% 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'}]);
结果: