Calculating a seperated sum from a vector.
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Benedikt Wessel
le 2 Juin 2019
Réponse apportée : Star Strider
le 2 Juin 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 commentaires
Réponse acceptée
Star Strider
le 2 Juin 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!