我试图在添加曲线时添加图例。我看不出我的代码有什么问题,有人可以帮忙吗?我在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.
所以它意味着它在第一圈运行但不是第二圈。
答案 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');
输出: