How to convert 3 hourly data into a 6 hourly data?

2 Ansichten (letzte 30 Tage)
Arun Nair
Arun Nair am 17 Mai 2019
Kommentiert: Arun Nair am 19 Mai 2019
I have a 3D variable (time,latitude,longitude) every 3hourly (regular). I need to change this variable into 6 hourly by averaging (eg, 0hr and 3hr of old variable averaged, and stored as first time step in the new variable). In total my old variable has 56 time steps. How should I go about?

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 17 Mai 2019
Bearbeitet: Andrei Bobrov am 18 Mai 2019
In R2016b
[m,n,k] = size(A);
t = hours(0:3:(k-1)*3);
Ar = reshape(A,m,[]);
TT = table2timetable(array2table(Ar),'RowTime',t(:));
T1 = retime(TT,TT.Time(1:2:end),'mean');
out = reshape(T1{:,:},[],n,k);
add:
[m,n,k] = size(A);
t = hours((0:m-1)*3)';
o1 = varfun(@mean,array2table([floor(t / hours(6)) + 1,reshape(A,m,[])]),...
'GroupingVariables','Var1');
out = reshape(o1{:,3:end},[],n,k);
  3 Kommentare
Andrei Bobrov
Andrei Bobrov am 18 Mai 2019
Please see part 'add' in my answer.
Arun Nair
Arun Nair am 19 Mai 2019
Thank you for your help!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Dynamic System Models finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by