Convert 10 minute average to hourly
2 views (last 30 days)
Show older comments
I have some data recorded at 10 minute interval and would like to calculate the hourly average. Some data is filtered out so using reshape is not applicable.
I could write a code to use for and if logicals but I have a lot of data and it would be to "heavy".
For each data I have the value and time (year, month, day, hour, minute (10,20 etc).
Is there a quicker way than using a long for and if code?
0 Comments
Accepted Answer
Andrei Bobrov
on 5 Jul 2013
Madd = randi([10 20],50,1);
data = [datenum(2013,2,1,0,cumsum(Madd),0), randi(2500,numel(Madd),1)];
% Let your data - two columns -> [date, value]
date1 = datevec(data(:,1));
[a,~,c] = unique(date1(:,1:4),'rows');
out = [a,zeros(size(a,1),2),accumarray(c,data(:,2),[],@mean)];
3 Comments
More Answers (1)
dpb
on 5 Jul 2013
Reinsert the missing points w/ NaN and if have Statistics toolbox use NANMEAN(); otherwise it's not difficult to filter them out for the sums and use the RESHAPE "trick" you mentioned...
2 Comments
dpb
on 5 Jul 2013
That's ok; the accumarray() solution is better, anyway.
I was waiting to hear how the timestamps were stored. Fortunately for you Andrei just made an assumption and went on... :)
See Also
Categories
Find more on Time Series Objects in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!