Вы можете использовать cat
для объединения векторов вдоль первого измерения. Затем вы можете передать транспонирование этой матрицы в plot
, и каждый столбец будет отображаться как собственный сюжет.
plot(cat(1, data{:}).');
Если мы создадим некоторые данные примера, это даст.
data = arrayfun(@(x)rand(1,10), ones(1, 5), 'uni', 0);
plot(cat(1, data{:}).');
Если вы хотите специфические (т.е. [1 3 5]
), вы можете заменить :
выше с показателями тех, которые вы хотите.
plot(cat(1, data{[1 3 5]}).');
Если вы хотите построить в среднем, просто использовать mean
на результат вызова cat
.
avg = mean(cat(1, data{:}), 1);
plot(avg);
И если вы хотите его в том же участке:
alldata = cat(1, data{:});
avg = mean(alldata, 1);
% Plot all of the curves
plot(alldata.');
hold on
% Plot the average curve
plot(avg, 'LineWidth', 3, 'Color', [0.5 0.5 0.5], 'LineStyle', '--')
Update
Если данные различны л engths, у вас есть два варианта, вы можете построить все с помощью цикла.
hax = axes;
hold(hax, 'on');
for k = 1:numel(data)
plot(data{k}, 'Parent', hax);
end
Или вы могли бы еще попытаться объединить все в одну матрицу, отступ с NaN
значений.
% Find the longest vector length
maxlength = max(cellfun(@(x)numel(x), data));
alldata = nan(maxlength, numel(data));
for k = 1:numel(data)
alldata(1:numel(data{k}),k) = data{k};
end
Тогда вы можете построить это и взять среднее значение с помощью nanmean
.
plot(alldata);
avg = nanmean(alldata, 2);
Это прекрасно работает с данными образца. Но мои данные имеют разную длину, поэтому я получаю сообщение «Размеры конкатенированных матриц несовместимы». – Orongo
@Orongo обновлен с примером того, как обращаться с разными векторами длины. – Suever
Suever работает как сон! Отлично! Большое спасибо! – Orongo