sum all monthly values for every year
    4 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Colby
 am 2 Feb. 2015
  
    
    
    
    
    Kommentiert: Scott Miller
 am 8 Okt. 2015
            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 Kommentare
Akzeptierte Antwort
  Guillaume
      
      
 am 2 Feb. 2015
        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 Kommentare
  Scott Miller
 am 8 Okt. 2015
				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);
Weitere Antworten (0)
Siehe auch
Kategorien
				Mehr zu Dates and Time finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

