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]}).');
あなたは平均をプロットしたい場合は、単にcat
への呼び出しの結果にmean
を使用しています。
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', '--')
更新
あなたのデータは、すべての異なるlである場合あなたは2つの選択肢があります。すべてをループでプロットすることができます。
hax = axes;
hold(hax, 'on');
for k = 1:numel(data)
plot(data{k}, 'Parent', hax);
end
それともまだNaN
値で1つの行列、パディングにすべてを組み合わせるために試みることができます。
% 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