2013-06-22 40 views
0

如果我有日期的列和體積數據的相應列,例如:Matlab的:使用Accumarray

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 

我想補充了數據在右欄中,每個日期。如果我使用像這樣的準馬拉伊:

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 

我不知道如何做到這一點。謝謝!

回答

2

現在無法檢查,但我相信你應該可以用accumarray (..., [], @cumsum)來完成。最後一個參數將用cumsum取代默認功能sum

+0

奇怪的''accumarray(dayStr,minuteVolumes,[],@ cumsum)'給出錯誤「函數'cumsum'返回一個非標量值。但是如果我使用不同的函數,比如'@ max',結果是正確的。 – siegel

+0

This Works! 'cell2mat(accumarray(dayStr,minuteVolumes,[],@(x){cumsum(x)}));'謝謝! – siegel