我想绘制几条曲线,每条曲线都有不同的长度。因此,我将每条曲线作为一个数组放在单元格索引Y中(这允许我在FOR循环内索引不同大小的数组)。我使用下面的“全部保持”来启用FOR循环的每次迭代,以在同一图中的单元格数组Y中绘制每个新数组。
hold all;
for i = 1:1:length(maxusers)
time = increment*(0:1:length(Y{i})-1);
plot(time,Y{i,1,:});
end
虽然这里使用单元格数组确实简化了Y中各种曲线的绘制,但我遇到的问题是创建图例。目前我正在使用一个非常长/丑陋的switch语句来涵盖所有可能的场景,但我认为应该有一个更优雅的解决方案。
如果我有一个数组(例如maxusers = 4),那就是:
filesize = [10 100 200 300];
我知道有效的传奇Matlab命令是:
legend(num2str(filesize(1)),num2str(filesize(2)),num2str(filesize(3)),num2str(filesize(4)));
但是当曲线数量是maxusers给出的变量时,我试图创建一个图例命令。有任何想法吗?提前谢谢。
答案 0 :(得分:10)
试试这个:
>> filesize = [10 100 200 300];
>> str = strtrim(cellstr(int2str(filesize.'))) %'# Create a cell array of
%# strings
str =
'10'
'100'
'200'
'300'
>> legend(str{:}); %# Pass the cell array contents to legend
%# as a comma-separated list