I have a series of 365 days. I need to divide the elements of the array into months with 31, 28, 31, 30 .. days and add the values ​​for the months.
The result should be a series of 12 months with aggregated values ​​for each month.
can i have a reshape function?

 Réponse acceptée

Convert to a timeseries() object and use retime()
Or:
Data = rand(365,1);
Data_timestamp = datetime(2021, 1, 1:365).'; %use non-leap year !
month_totals = accumarray(month(Data_timestamp), Data)
month_totals = 12×1
17.6917 12.5502 14.1349 17.2993 14.2127 17.4742 16.3479 14.0845 13.4153 15.4119

Plus de réponses (1)

dpb
dpb le 16 Jan 2021
Add the date to a timetable and retime with aggregation--
tt=timetable(datetime(yr,1,1:365).',data); % make timetable of days and your data
ttAgg=retime(tt,'monthly','sum');

1 commentaire

Nikola Ostojic
Nikola Ostojic le 16 Jan 2021
Thanks for the reply!! :))
I believe it works, but i already got the reply.

Connectez-vous pour commenter.

Catégories

Produits

Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by