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

ggk*_*ath 1 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
Run Code Online (Sandbox Code Playgroud)

虽然在这里使用单元格数组确实简化了Y中各种曲线的绘制,但我遇到的问题是创建图例.目前我正在使用一个非常长/丑的switch语句来涵盖所有可能的场景,但我认为应该有一个更优雅的解决方案.

如果我有一个数组(例如maxusers = 4),那就是:

 filesize = [10 100 200 300];
Run Code Online (Sandbox Code Playgroud)

我知道有效的传说Matlab命令是:

legend(num2str(filesize(1)),num2str(filesize(2)),num2str(filesize(3)),num2str(filesize(4)));
Run Code Online (Sandbox Code Playgroud)

但是当曲线数量是maxusers给出的变量时,我试图创建一个图例命令.有任何想法吗?提前致谢.

gno*_*ice 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
Run Code Online (Sandbox Code Playgroud)