在Matlab绘图的for循环中创建一个图例

时间:2010-10-15 21:03:50

标签: arrays matlab

我想绘制几条曲线,每条曲线都有不同的长度。因此,我将每条曲线作为一个数组放在单元格索引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给出的变量时,我试图创建一个图例命令。有任何想法吗?提前谢谢。

1 个答案:

答案 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