MATLAB: Extracting one data point per day from a time series

bar chartsextracting one data point based on date/time stamploops

I have a time series of predicted water level data (cm), either 3 or 4 predicted values per day (for an entire year).
For each day I would like to extract only the highest predicted value along with the date/time stamp.
How do I extract the highest value for each day – and write that out to a new matrix?
An example of the data is attached in the extract_data.txt file.
Following that, I would like to bar chart the data per month.
I can do this manually – however, is there a way to select the data based on the date/time stamp and bar plot the data for that month ?
Is there a way to loop the plotting ?
Thank you, Jenny

Best Answer

This produces a bar chart
fid = fopen( 'cssm.txt', 'r' );
cac = textscan( fid, '%s%f', 'Delimiter' , '\t' );
fclose( fid );
vec = datevec( cac{1}, 'dd/mm/yyyy HH:MM:SS' );
day_of_year = @(vec) datenum(vec(:,1:3))-datenum(vec(1,1),1,0);
sl = accumarray( day_of_year(vec), cac{2}, [max(day_of_year(vec)),1], @max );
bar( sl )
xlabel( 'day of year' )
where cssm.txt is a copy of your file