How to calculate the cumulative value by consequetive hours

1 回表示 (過去 30 日間)
MJ
MJ 2013 年 5 月 20 日
Example I have these values to calculate them every 1 to 5 hours cumulative and continuous;
Data: 1 2 3 4 5 6 7 8
Answer for cumulative every 2 hours will be; 3 5 7 9 11 13 15
Answer for cumulative every 3 hours will be; 6 9 12 15 18 21
Answer for cumulative every 4 hours will be; 10 14 18 22 26
And answer for cumulative every 5 hours will be; 15 20 25 30
Thank you in advance.
  1 件のコメント
Jan
Jan 2013 年 5 月 22 日
Posting the inputs in valid Matlab syntax has the advantages to be clear and to be usable for suggestions by copy&paste. I cannot guess, what "answer wil be" exactly means.

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

回答 (2 件)

Teja Muppirala
Teja Muppirala 2013 年 5 月 22 日
data = [1 2 3 4 5 6 7 8];
for n = 2:5
conv(data,ones(1,n),'valid')
end
This gives me:
ans =
3 5 7 9 11 13 15
ans =
6 9 12 15 18 21
ans =
10 14 18 22 26
ans =
15 20 25 30
  1 件のコメント
Teja Muppirala
Teja Muppirala 2013 年 5 月 22 日
I am not sure how you plan to store/use these values, but you might make use of cell arrays to store data of unequal lengths.

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


Iain
Iain 2013 年 5 月 20 日
Where n is how many data points you want to do it for:
cumulative = cumsum(Data);
subtract = cumsum([zeros(1,n) Data(1:(end-n))]);
cumulative_n = cululative - subtract;
  2 件のコメント
MJ
MJ 2013 年 5 月 22 日
I have tried but it only calculated for 1 hour cumulative. 3 6 10 15 21 28 36. How about for 2 hours and so on? That subtract doesnt work.
I use this;
n=8
data=importdata('data.txt')
cumulative = cumsum(data);
subtract = cumsum([zeros(1,n) Data(1:(end-n))]);
cumulative_n = cumulative - subtract;
Iain
Iain 2013 年 5 月 22 日
My apologies. cumulative_n = [cumulative(n) (cumulative(n+1:end)-subtract(n+1:end))];
With 8 data points, and n = 8, you will only get 1 value.

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

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by