sum all monthly values for every year
1 次查看(过去 30 天)
显示 更早的评论
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!
0 个评论
采纳的回答
Guillaume
2015-2-2
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
2 个评论
Scott Miller
2015-10-8
Thanks, Guillaume! Adding an @max function handle to the accumarray function in your code sample is a slick way to single out peak annual flows from a stream flow or runoff time series.
pkQ = accumarray(subs, tsQ(:, 2),[],@max);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!