Calculating a seperated sum from a vector.
1 view (last 30 days)
Show older comments
Benedikt Wessel
on 2 Jun 2019
Answered: Star Strider
on 2 Jun 2019
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.
0 Comments
Accepted Answer
Star Strider
on 2 Jun 2019
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 Comments
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!