cumulative sum of an array

8 ビュー (過去 30 日間)
Lanceric Tse
Lanceric Tse 2018 年 8 月 13 日
コメント済み: James Tursa 2018 年 8 月 13 日
Hi, so I have an array,b, I need to find the cumulative sums for every 5 values.
To calculate the cumulative sum S of an array a with 5 values
b=[1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0];
a=[1 2 3 4 5];
amean=mean2(a);
S=zeros([1 length(a)]);
S(1)=a(1)-amean
for i=2:5
S(i)=S(i-1)+(a(i)-amean)
end
S=-2 -3 -3 -2 0
The result for b should look like S = -2 -3 -3 -2 0 0 1 3 6 0 -2 -3 -3 -2 0 0 1 3 6 0
  2 件のコメント
James Tursa
James Tursa 2018 年 8 月 13 日
What is your question? For the given b, what would be your desired output?
Lanceric Tse
Lanceric Tse 2018 年 8 月 13 日
編集済み: Lanceric Tse 2018 年 8 月 13 日
The desired output with be an array S, which contains the cumulative sums of every 5 values.
The code under the %% is how I would get the cumulative sum of an array of 5 values

サインインしてコメントする。

採用された回答

Matt J
Matt J 2018 年 8 月 13 日
編集済み: Matt J 2018 年 8 月 13 日
br=reshape(b,5,[]);
S=reshape( cumsum(br-mean(br)) ,1,[])
  1 件のコメント
James Tursa
James Tursa 2018 年 8 月 13 日
And, for older versions of MATLAB
S = reshape( cumsum(bsxfun(@minus,br,mean(br))) ,1,[])

サインインしてコメントする。

その他の回答 (1 件)

dpb
dpb 2018 年 8 月 13 日
編集済み: dpb 2018 年 8 月 13 日
>> N
N =
5
>> S=sum(reshape(b,[],length(b)/N))
S =
15 30 15 30
>>
>> S=cumsum(reshape(b,[],length(b)/N))
S =
1 6 1 6
3 13 3 13
6 21 6 21
10 30 10 30
15 30 15 30
>>
  2 件のコメント
Lanceric Tse
Lanceric Tse 2018 年 8 月 13 日
I'm looking for the cumulative sum, not sum
dpb
dpb 2018 年 8 月 13 日
Sorry, typo...the fix should be obvious... :)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by