附加传说。我的代码有什么问题?

时间:2015-06-18 11:26:38

标签: matlab

我试图在添加曲线时添加图例。我看不出我的代码有什么问题,有人可以帮忙吗?我在ubuntu上使用matlab r2015a。

x=1:5;
v=1:5;
plot(x,v)
[~,~,plots,str] = legend('1');

hold on
for i=4:10
pl=plot(x,v*i);
[~,~,plots,str]=legend([plots;pl],str,num2str(i))
end

当我运行它时,我得到:

plots = 

  1x2 Line array:

    Line    Line


str = 

    '1'    '4'

Error using vertcat
Dimensions of matrices being
concatenated are not
consistent.

所以它意味着它在第一圈运行但不是第二圈。

1 个答案:

答案 0 :(得分:0)

正如评论中所讨论的,Matlab处理legends的方式与早期版本不同;它们现在是传奇物体。

在任何情况下,要解决您的问题,这是一个维度不匹配问题,您可以简单地使用transpose运算符垂直连接您输出的输出,因为Matlab返回一个水平数组的行和文本对象,而您想要一个垂直阵列。因此,使用plots.'pl.'可以正常使用。此外,最好不要将i用作循环计数器,因为它代表虚构单位。

clear
clc
close all

x=1:5;
v=1:5;
plot(x,v)
[~,~,plots,str] = legend('1');

hold on
for k=4:10
pl=plot(x,v*k);
[LegendObject,~,plots,str]=legend([plots.';pl.'],str,num2str(k));
end

%// Use the legend object to modify its properties/location
set(LegendObject,'Location','NorthWest');

输出:

enter image description here