calculating hourly means of a matrix

2 visualizaciones (últimos 30 días)
Richard
Richard el 26 de Ag. de 2012
Comentada: Venkata el 11 de Mayo de 2017
I have a dataset in the following format:
dd = datenum('2009-04-17 02:00');
ddend = datenum('2009-11-24 12:27');
Day = dd:(1./24./60):ddend;
time = datevec(Day);
data = rand(length(time),12);
Where time refers to the time (in minutely intervals) and data refers to a matrix of data points. I would like to find the best possible way of calculating the hourly means of each column of the matrix (i.e. mean of every 24 rows in each individual column). How would I achieve this, by taking into consideration the time variable?

Respuesta aceptada

Jan
Jan el 27 de Ag. de 2012
limit = floor(length(time) / 60) * 60;
data_hour = reshape(data(1:limit), 60, []);
data_mean = mean(data_hour, 1);

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 27 de Ag. de 2012
other variant
[c,c,c] = unique(time(:,1:4),'rows');
s{2} = kron((1:size(data,2))',ones(size(data,1),1));
s{1} = kron(ones(size(data,2),1),c);
result = accumarray(s,data(:),[],@mean);
  1 comentario
Venkata
Venkata el 11 de Mayo de 2017
Dear Andrei Bobrov,
Could you please elaborate on your code. I want to reshape hourly mean data which is in vector form to a matrix, but there might be some data (hourly values) missing. When I tried your code, I got an error related to array size. Mine is a large array with 210888 rows.
Thank you.

Iniciar sesión para comentar.

Categorías

Más información sobre Time Series en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by