【问题标题】:Matlab: Using AccumarrayMatlab:使用Accumarray
【发布时间】:2013-06-19 19:21:47
【问题描述】:

如果我有一列日期和一列对应的体积数据,像这样:

31,3
31,2
31,1
31,5
07,2
07,3
07,4
07,2
07,3
07,5
07,3
07,1
07,1
07,2
07,3
30,5
06,4

我想在右侧列中为每个日期添加数据。如果我像这样使用 accumarray:

orgSumVinDay=accumarray(dayIdx,vv); 
k=orgSumVinDay==0;
SumVininDay=orgSumVinDay;
SumVinDay(k)=[]

有效;我明白了:

11
29
 5
 4

这是正确的,因为在 31 日,有 3+2+1+5=11 等。

但是,我想得到一个显示每天累积添加的列,所以它看起来像:

 3
 5
 6
11 
 2
 4
 9
11
14
19
22
23
24
26
29
 5
 4

我不确定如何实现这一点。谢谢!

【问题讨论】:

    标签: arrays matlab accumulate


    【解决方案1】:

    目前无法检查,但我相信您应该可以使用 accumarray (..., [], @cumsum) 进行检查。最后一个参数会将默认函数sum替换为cumsum

    【讨论】:

    • 奇怪,accumarray(dayStr,minuteVolumes, [],@cumsum) 给出错误“函数 'cumsum' 返回了一个非标量值。”但是如果我使用不同的函数,例如@max,结果是正确的。
    • 这行得通! cell2mat(accumarray(dayStr,minuteVolumes,[],@(x){cumsum(x)})); 谢谢!
    猜你喜欢
    • 2015-07-25
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    相关资源
    最近更新 更多