Add up a certain number of consecutive values followed by the next values in a row

24 ビュー (過去 30 日間)
Dennis Annutsch
Dennis Annutsch 2021 年 8 月 17 日
コメント済み: Dennis Annutsch 2021 年 8 月 17 日
Good morning,
I am looking for a function that can do the following:
E.g.
A = [1 3 4 0 -1 6]
Result = 4 4 5
Always added up two values from the beginning - then the next two values - and so on.
It would be nice to have the option to say please always add up 3 values, so that the result would be: Result = 8 5
Thanks for your help!
Dennis

回答 (2 件)

Wan Ji
Wan Ji 2021 年 8 月 17 日
I'll write for you!
function a = everynsum(arr, n)
p = length(arr);
a = sum(reshape(arr,n,p/n)); % in case mod(p,n)=0
end
  2 件のコメント
Wan Ji
Wan Ji 2021 年 8 月 17 日
By movsum you can do:
A = [1 3 4 0 -1 6];
n = 2; % every 2 sum
B = movsum(A,n);
Result = B(n:n:end)
The result is
Result =
4 4 5
Dennis Annutsch
Dennis Annutsch 2021 年 8 月 17 日
Thank you very much!! This works exactly as I imagined. I wish you all the best!

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


Awais Saeed
Awais Saeed 2021 年 8 月 17 日
clc;clear all;close all
A = [1 3 4 0 -1 6];
n = 2; % sum every n elements
jj = 0;
simdone = true; % to keep while loop running
while (simdone)
jj = jj + 1;
if (size(A,2) == n)
result(jj) = sum(A(1:n));
break % break while loop
end
result(jj) = sum(A(1:n));
A(1:n) = []; % deleting summed elements
end

カテゴリ

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

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by