时间序列的单元阵列中的数据总和(结束)

时间:2014-07-15 07:46:49

标签: matlab

鉴于以下代码:

% Generate some random data
n = 10;
A = cell(n, 1);
for i=1:n
    A{i} = timeseries;
    A{i}.Data = rand(100, 1);
    A{i}.Time = 1:100;
end

我想在不明确编写Data(end)循环的情况下使for之和。是否有一种智能方法可以在一行中的所有单元格中选择Data(end)A{:}.Data(end)不起作用。

3 个答案:

答案 0 :(得分:4)

你可以用cellfun来做,但这实际上只是一个for循环包裹起来:

cellfun(@(x) x.Data(end), A)

答案 1 :(得分:1)

我更喜欢Dan's answer,但作为参考,我会使用arrayfun发布替代方案。这也只是一个用于保存击键的for循环,但不一定是时间。

sum(arrayfun(@(n) A{n}.Data(end), 1:numel(A)))

答案 2 :(得分:1)

您还可以将所有Data字段提取到单个矩阵中,如果您计划对其执行多项操作,这可能是值得的:

A2 = [A{:}];
A3 = [A2.Data];
sum(A3(end,:))