Average values from timeseries

18 ビュー (過去 30 日間)
Kate Heisenberg
Kate Heisenberg 2020 年 2 月 19 日
回答済み: Jancoba Dorley 2022 年 2 月 28 日
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 件のコメント
Adam Danz
Adam Danz 2020 年 2 月 19 日
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.

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

採用された回答

Adam Danz
Adam Danz 2020 年 2 月 19 日
編集済み: Adam Danz 2020 年 2 月 19 日
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 件のコメント
Kate Heisenberg
Kate Heisenberg 2020 年 2 月 20 日
Thanks alot. works perfect for me now:)
Adam Danz
Adam Danz 2020 年 2 月 20 日
編集済み: Adam Danz 2020 年 2 月 21 日
Glad I could help!

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

その他の回答 (1 件)

Jancoba Dorley
Jancoba Dorley 2022 年 2 月 28 日
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.

カテゴリ

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

製品


リリース

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by