Averaging daily values from annual data

2 views (last 30 days)
JH
JH on 31 Jul 2015
Answered: Andrei Bobrov on 31 Jul 2015
Hi there,
I have a 2 column matrix of Date (dd:mm:yyyy ss:mm:hh) and wave height for 8372 records over a year, one record per hour.
What would be the best way to find a mean wave height for each day and plot this? Some days have more records than others.
I am fairly new to Matlab and understand that I need to convert using datenum first. Please help!
Alternatively, how would I run a moving average over the data for a specified number of records?
Thank you.
  1 Comment
per isakson
per isakson on 31 Jul 2015
"8372" &nbsp that is not a full year of hourly data. Which hours are missing?

Sign in to comment.

Answers (1)

Andrei Bobrov
Andrei Bobrov on 31 Jul 2015
f = fopen('data.txt');
c = textscan(f,'%s %s %f');
fclose(f);
[y m d] = datevec(datenum(strcat(c{1:2}),'dd:mm:yyyySS:MM:HH'));
[a,~,c1] = unique([y m d],'rows');
out = [a, accumarray(c1,c{3},[],@mean);

Categories

Find more on Dates and Time in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!