Calculating a seperated sum from a vector.

Hello everybody.
A=[1,2,3,4,5,6,7,8,9,10] % not a fixed size, can be build with n*5
How can I build the sum of five numbers? I know how to do it, when the length of the vector is fixed:
a=sum(A(1:5),2)
b=sum(A(6:10),2)
Can you help me putting this operation into a for loop, so that I can do it on every size of the vector?
Tahnks.

 採用された回答

Star Strider
Star Strider 2019 年 6 月 2 日

0 投票

If you want to sum consecutive blocks of elements, no explicit looop is necessary. You can just use the reshape (link) function, then do the summation.
N = 12; % Create Vector Length
A = 1:N; % Create Data
len = 5; % Number OF Elements To Sum In Each Segment
You did not say how you wanted to handle elements that were not part of a segment equal to 5, so here are two possibilities:
mtx = reshape(A(1:len*fix(numel(A)/len)), len, []); % Discard Elements > Multiple Of ‘len’
or:
mtx = reshape([A(:);zeros(len*ceil(numel(A)/len)-numel(A),1)], len, []); % Zero-Pad Elements > Multiple Of ‘len’
then the summation is simply:
s = sum(mtx);
You can put the ‘mtx’ assignments within the sum argument to create a single line of code. I created ‘mtx’ separately for convenience here.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by