создать легенду внутри цикла для сюжета Matlab - PullRequest
1 голос
/ 16 октября 2010

Я хочу построить несколько кривых, каждая из которых имеет разную длину.Итак, я поместил каждую кривую в виде массива в индексе ячейки Y (это позволяет мне индексировать массивы разных размеров внутри цикла FOR).Я использую «hold all» ниже, чтобы включить каждую итерацию цикла 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 Ответ

10 голосов
/ 16 октября 2010

Попробуйте это:

>> 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...