MATLAB: Sum all monthly values for every year

sumif

I have a large matrix A. In column 1, I have serial dates. They are in half month time steps. (ex …10/01/1984, 10/15/1984, 11/01/1984,…. or as serial dates …724916, 724930, 724947, …) Then in the second column, are values for each date. I would like a new matrix that has the sum of the values in column b, for every year in column a. For the life of me, I can't figure out a simple way to execute this. Does anyone have a simple answer? Thanks a lot. I appreciate your time!

Best Answer

Easy:
dv = datevec(A(:, 1)); %convert to datevec to easily separate years
[years, ~, subs] = unique(dv(:, 1)); %get unique years and location
yearsum = accumarray(subs, A(:, 2)); %accumarray with most default values does sums