sum all monthly values for every year

3 ビュー (過去 30 日間)
Colby
Colby 2015 年 2 月 2 日
コメント済み: Scott Miller 2015 年 10 月 8 日
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!

採用された回答

Guillaume
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 件のコメント
Colby
Colby 2015 年 2 月 2 日
Thank you very much Guilaume!
Scott Miller
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 ExchangeDates and Time についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by