Average values from timeseries

50 visualizzazioni (ultimi 30 giorni)
Kate Heisenberg
Kate Heisenberg il 19 Feb 2020
Risposto: Jancoba Dorley il 28 Feb 2022
Hiiii. I am very new to matlab. I have a timeseries of data that I would like to average for average values per hour per day per month per year ( 24*365=8760 values in output file). Basically the data is structured as follows:
Date Time Temperature
1/1/2005 1:00 282.19
1/1/2005 2:00 281.5
1/1/2005 3:00 281.04
1/1/2005 4:00 282.58
....
31/12/2014 23:00 294.75
31/12/2014 24:00 294.57
The data I am trying to import as individual vectors/columns or as a timetable. I would like to get a new table/matrix with 8760 new rows each averaging value of each hour of each day of each month by averaging all the 14 years of data. I have tried doing it using index or 'find' approach but it didnt quite work. Any help would be highly appreciated. Thaaanks :D
  1 Commento
Adam Danz
Adam Danz il 19 Feb 2020
Read your data in as a timetable if you haven't already done so.
Then use TT2 = retime(TT,'hourly','mean') to compute the hourly mean, monthly mean, yearly, etc.

Accedi per commentare.

Risposta accettata

Adam Danz
Adam Danz il 19 Feb 2020
Modificato: Adam Danz il 19 Feb 2020
Below is a general scetch of what you need to do. Give it a shot and if you get stuck, share the code and let us know where you're stuck.
  1. Use d = day(t,'dayofyear') to get the day-of-year number for each datatime value where t is the datetime column.
  2. Use h = hour(t) to get the hour of each datetime value where t is the datetime column.
  3. Use [G,ID] = findgroups(d,h) to group the days & hours (d and h are from the steps above)
  4. Use Y = splitapply(@mean,data,G) to get the mean of each group of data where 'data' is a colum in your table. G is from the previous step.
  4 Commenti
Kate Heisenberg
Kate Heisenberg il 20 Feb 2020
Thanks alot. works perfect for me now:)
Adam Danz
Adam Danz il 20 Feb 2020
Modificato: Adam Danz il 21 Feb 2020
Glad I could help!

Accedi per commentare.

Più risposte (1)

Jancoba Dorley
Jancoba Dorley il 28 Feb 2022
The best wway to do this is to convert the table to timetable
Example:
x = table2timetable(data); %Note that data is a table containing time xby1 datetime and xby1 double
x_daily=retime(x,'daily','mean'); %this calculates the daily mean from the datetime table
% you can do the saame to get the hourly mean.

Categorie

Scopri di più su Time Series in Help Center e File Exchange

Prodotti


Release

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by